// 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等于数字而不是结果。
答案 0 :(得分:0)
您的result
可能已初始化为0
(例如int result = 0;
)。
正在发生的事情是,当您输入小于3
的数字时,这意味着factorial-1
小于2
,并且由于我们正在处理整数,因此这意味着不大比1
。循环的条件是i
必须比1
大(em),因此您永远不会进入循环,并且result
永远都不会改变其初始值。一种快速的解决方法是将i > 1
更改为i > 0
;无论如何,乘以1
没有什么害处。
您还应该将result
初始化为1
,因为不会为值0
和1
输入循环,但这很好,因为它们的阶乘都是1
。