如何修正Java阶乘计算器多次输入时结果错误的问题?
阶乘计算器错误修复方案
你的问题出在fact变量的初始化位置——它被定义在while循环外面,第一次计算阶乘后,fact的值会保留下来。第二次输入数字时,程序会用这个旧值继续相乘,自然得到错误结果。
修复方法
把fact的初始化移到while循环内部,每次处理新的数字前,都把fact重置为1:
public class Factor { public static void main(String[] args) { Scanner type = new Scanner(System.in); int i; System.out.println("<------ FACTORIAL CALCULATOR ------"); while (true) { System.out.print("Enter a positive integer: "); int num = type.nextInt(); // 每次循环都重置fact为1 int fact = 1; if (num > 0) { System.out.print(num + "! = "); for (i = 1; i <= num; i++) { System.out.print(i); if(i != num) { System.out.print(" x "); } } for (i = 1; i <= num; i++) { fact = fact * i; } System.out.println("\nThe factorial of " + num + " is: " + fact); } else { System.out.println("Invalid input! Program stopped!"); break; } } } }
也可以选择在进入if(num>0)分支后,先把fact重置为1,效果完全一致。这样每次计算新数字的阶乘时,都是从1开始累乘,就能得到正确结果了。
内容的提问来源于stack exchange,提问作者X Y Z
相关产品推荐
相关产品推荐

