Вы забыли сбросить 'result' в 1.
Кроме того, нет необходимости иметь другой оператор if, если он только проверяет отрицание первого, просто используйте else.
Я также исправил рекомендации по стилю кода, чтобы они следовали стандартным Java следующим образом:
- Используемый вами стиль фигурных скобок обычно используется в C / C ++.
- Даже если операторы if или циклы содержат только одну строку после них, в любом случае целесообразно использовать фигурные скобки в Java.
Посмотрите Google Java Руководство по стилю , если хотите узнать больше.
Scanner scan = new Scanner(System.in);
long result = 1;
int m = scan.nextInt();
int n = scan.nextInt();
scan.close();
if (n > 0 && m > 0){
for(int j = n; j <= m; j++){
result = 1; //You forgot to reset 'result'
for(int i = 1; i <= j; i++){
result *= i;
}
System.out.println(result);
} else { // No need for another if statement
System.out.println("Not Valid!");
}