Java 程序的阶乘计算不能做 0,1,2 我该如何解决这个问题
Java Factorial Calculation for program can not do 0,1,2 How can I fix this
// 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
.
// 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
.