Java 5.为120,但输出读数为1!是120吗?

Java 5.为120,但输出读数为1!是120吗?,java,while-loop,factorial,Java,While Loop,Factorial,说明:编写一个程序,让用户输入N并输出N!(意思是N*(N-1)(N-2).*2*1)。提示:将变量totalValue初始化为N,并使用从N-1计数到1的循环变量i 根据我对Java阶乘的理解,5!=5*4*3*2*1 = 120. 在本练习中,当我计算Java阶乘时,我输入了5作为用户输入,以测试我是否能够正确计算Java阶乘。但是输出结果是1!是120。以下是我的代码的一部分,只是想了解一下: userInt = scnr.nextInt(); // FIXME: Ask user

说明:编写一个程序,让用户输入N并输出N!(意思是N*(N-1)(N-2).*2*1)。提示:将变量totalValue初始化为N,并使用从N-1计数到1的循环变量i

根据我对Java阶乘的理解,5!=5*4*3*2*1 = 120. 在本练习中,当我计算Java阶乘时,我输入了5作为用户输入,以测试我是否能够正确计算Java阶乘。但是输出结果是1!是120。以下是我的代码的一部分,只是想了解一下:

 userInt = scnr.nextInt(); 
 // FIXME: Ask user to input an integer, store in userInt

 totalVal = userInt;

 while (userInt > 1) {
     userInt = userInt - 1;
     totalVal = userInt * totalVal;

 }   // FIXME: Add while loop that counts down to 1, updating totalVal
 System.out.println(userInt + "! is " + totalVal);
 } //After typing 5 and clicking Run, it shows 1! is 120
根据我对注释的理解//FIXME:Ask user输入一个整数,存储在userInt/,我输入'5'作为尝试计算阶乘的测试。所以在输入5作为用户输入时,为什么结果不是5呢!是120吗?为什么不是5号!是120吗

是否可以从我的代码中解释为什么它是1!是120而不是5!是120吗?或者为什么应该是5!120和我想象的一样吗?
提前谢谢你,我正试着把我的头绕在这上面。

在while循环之后,userInt变成了1


userInt=userInt-1 您正在while循环中修改userInt变量,因此在打印时它将始终打印1


在while循环之前,将user int存储在另一个变量中,并将其打印。

您将递减
userInt
,直到它达到1。您可以通过添加并使用holder整数变量来解决此问题

userInt = scnr.nextInt(); 

int holder = userInt;

totalVal = userInt;

while (userInt > 1) {
 userInt = userInt - 1;
 totalVal = userInt * totalVal;

}   // FIXME: Add while loop that counts down to 1, updating totalVal
System.out.println(holder + "! is " + totalVal);
} //After typing 5 and clicking Run, it shows 1! is 120

因为您正在递减
userInt
,直到它达到1。什么让你困惑?当递减时,如果我错了,请纠正我,也就是说,I=I-1?也就是说在我的代码中它是1!是因为userInt=userInt-1吗?现在有理由解释为什么是1!是120。一开始我很困惑,因为我认为5!=5*4*3*2*1=120,我假设输出应该显示为5!完全正确。你可以使用
来代替
,而
@acruz30如果这有帮助,你可以接受它。