Java 使用do-while循环的阶乘。num1变量变为零,但while的条件为num1>=1.这是怎么回事?

Java 使用do-while循环的阶乘。num1变量变为零,但while的条件为num1>=1.这是怎么回事?,java,do-while,factorial,Java,Do While,Factorial,为什么结果为零,因为条件是num1是否大于或等于1?因为这是一个do while循环,并且您正在检查num1>=1,循环EXEXEXUTES值num1=1, 和num1——num1=0的结果,因此整个阶乘为零: Scanner scan = new Scanner(System.in); System.out.println("Enter a number ") ; int num = scan.nextInt(); int num1 = num; do { num1--;

为什么结果为零,因为条件是num1是否大于或等于1?

因为这是一个do while循环,并且您正在检查num1>=1,循环EXEXEXUTES值num1=1, 和num1——num1=0的结果,因此整个阶乘为零:

Scanner scan = new Scanner(System.in);

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

int num = scan.nextInt();

int num1 = num;
do {
      num1--;  
      num = num * num1; 
} while (num1 >= 1);

System.out.println(num);

由于这是一个do while循环,并且您正在检查num1>=1,因此循环exexutes值num1=1, 和num1——num1=0的结果,因此整个阶乘为零:

Scanner scan = new Scanner(System.in);

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

int num = scan.nextInt();

int num1 = num;
do {
      num1--;  
      num = num * num1; 
} while (num1 >= 1);

System.out.println(num);

num1
不再>=1时,循环退出,当它等于0时会发生这种情况。您使用的是
do-while
循环。循环不变量必须是
false
,循环才能结束,并且在循环体中,每次迭代时从
num1
(顺便说一句,变量名很糟糕)中减去一个。因此,经过精确的
num
(只是糟糕的变量名)迭代之后,
num1
必须是
0
@ElliottFrisch谢谢。顺便说一句,我只是在练习如何编码,这就是为什么我想出了那些蹩脚的变量名。没关系,有一些短变量名,比如
a
b
I
j
,你知道你的立场。但是用
num
num1
你永远也说不清。“我讨厌这些肮脏的中立分子,基夫。对于敌人,你知道他们站在哪里,但是对于中立分子,谁知道呢?这让我恶心。”——Zap Branniganth循环在
num1
不再>=1时退出,当它等于0时就会发生。你使用的是
do-while
循环。循环不变量必须是
false
,循环才能结束,并且在循环体中,每次迭代时从
num1
(顺便说一句,变量名很糟糕)中减去一个。因此,经过精确的
num
(只是糟糕的变量名)迭代之后,
num1
必须是
0
@ElliottFrisch谢谢。顺便说一句,我只是在练习如何编码,这就是为什么我想出了那些蹩脚的变量名。没关系,有一些短变量名,比如
a
b
I
j
,你知道你的立场。但是用
num
num1
你永远也说不清。“我讨厌这些肮脏的中立分子,基夫。你知道敌人的立场,但是中立分子,谁知道呢?这让我恶心。”——扎普·布兰尼根