Java 打印阶乘 1-30



我要做的就是打印阶乘数字 0-30。 当我运行它时,它会无休止地打印阶乘 = 0。 有人可以告诉我如何纠正这一点吗?

public static void factor(){
    int n=0;
    int factorial = 1;
    while (n<=0&n<=30)
    {
        n=n++;
      factorial = factorial * n;
      n--;
      System.out.println("Factorial = " + factorial);
    }

}

public static void main(String[] args) {
   factor();
}

您在循环中递减n,因此它将始终在01之间切换。此外,int不能容纳这么大的数字,long也不能。你必须使用更聪明的东西,比如BigInteger

int n = 0;
BigInteger factorial = BigInteger.ONE;
while (n <= 30) {
    System.out.printf("Factorial(%d) = %s%n", n, factorial);
    n++;
    factorial = factorial.multiply(BigInteger.valueOf(n));
}