无法获得这个"Factorial"计划的预期输出?

1 java factorial

我的名字是山姆,我是java的初学者.我实际上已经尝试了这个"阶乘"程序,我无法看到逻辑出错了......我没有得到预期的输出,可以有谁告诉我为什么?在此先感谢,grt日向所有用户:)

阶乘:

import java.util.*;

class factorial {

    public static void main(String[] args) {

        int i;

        System.out.println("enter a number");

        Scanner in=new Scanner(System.in);

        int n=in.nextInt();

        int x=n;

        while(x!=0) {
            x=x*(n-1);
            n--;
        }

        System.out.println(x);

    }

}
Run Code Online (Sandbox Code Playgroud)

当我输入(例如)5时,我希望获得5(120)的事实.相反,我得到零.所有输入都会发生这种情况

pax*_*blo 6

如果您真的想学习,请逐行开始运行代码,例如:

int n = 5;

int x = n;
while (x != 0) {
    x = x * (n - 1);
    n--;
}
Run Code Online (Sandbox Code Playgroud)

从一张纸开始,这样:

  x  |  n
-----+-----
     |
     |
     |
     |
Run Code Online (Sandbox Code Playgroud)

并且,当您"执行"每一行时,记下新值.做到这一点,你的问题就在哪里.它还将使您成为更好的开发人员.

请不要看这个答案的其余部分,直到你已经做到了,并试图修复它.


一旦你理解了这个问题并(希望)修复它,请将你的解决方案与下面的解决方案进行比较:

int n = 5;          // input value.

int x = 1;          // initial accumulator set to identity (n * 1 = n).
while (n != 0) {    // use all values from n down to 1 (inclusive).
    x = x * n;      // multiply accumulator by that value.
    n--;            // get next value.
}
Run Code Online (Sandbox Code Playgroud)