// Factorial Calculation
double factorial = 1;
factorial = firstNumber;
for(double i = factorial-1; i > 1; i--){
factorial = factorial * i;
// Makes result equal to the firstNumber
result = factorial;
// To continue the program
continue;
}
// Displays the result for factorial
System.out.println("factorial of " + firstNumber + " is " + form.format(result));
// To continue the program
continue;
所以我必须使用switch语句一切都有效,除非我进行阶乘计算,如果我输入0,1或2,答案总是0,但从3到10,答案总是正确的。所以firstNumber是用户输入的变量。因子是它计算的数字我必须这样做,所以当我显示我的消息时,firstNumber等于数字而不是结果。
你的result
可能被初始化为0
(例如int result = 0;
)。
发生的事情是,当你输入一个小于3
的数字时,这意味着factorial-1
小于2
,并且由于我们处理的是整数,这意味着不大于1
。你的循环的条件是i
必须大于1
,所以你永远不会进入你的循环,并且result
永远不会改变它的初始值。快速修复可能只是将i > 1
更改为i > 0
;无论如何,乘以1
都没有害处。
你也应该将result
初始化为1
,因为你不会输入值为0
和1
的循环,但这很好,因为它们的阶乘都是1
。