程序的Java阶乘计算无法执行0,1,2如何解决此问题

时间:2019-03-05 21:13:08

标签: java factorial

// 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等于数字而不是结果。

1 个答案:

答案 0 :(得分:0)

您的result可能已初始化为0(例如int result = 0;)。

正在发生的事情是,当您输入小于3的数字时,这意味着factorial-1小于2,并且由于我们正在处理整数,因此这意味着不大比1。循环的条件是i必须比1大(em),因此您永远不会进入循环,并且result永远都不会改变其初始值。一种快速的解决方法是将i > 1更改为i > 0;无论如何,乘以1没有什么害处。

您还应该将result初始化为1,因为不会为值01输入循环,但这很好,因为它们的阶乘都是1