为什么这个java代码的输出是6和21? 主类{ 公共静态void main(字符串[]args){ 整数和=0; int i=0; 做{ i++; sum=sum+i; } while(i

为什么这个java代码的输出是6和21? 主类{ 公共静态void main(字符串[]args){ 整数和=0; int i=0; 做{ i++; sum=sum+i; } while(i,java,Java,因为当5=5时为true,程序将继续运行,然后是5++,然后,正如您所看到的。当i=5时,while条件的计算结果仍然为true,因此内部的代码块执行{}将再次运行一次,给出i=6和sum=21,此时while条件将设置为false,并打印值。while条件(i)您使用的是do/while循环。该条件在执行块后进行计算,因此i确实变为6,您可以考虑在5=5时执行5++。但是,如果您在sum=sum+i下面计算出i++,那么sum得到15。我不明白为什么输出会因此而改变条件i@ahazbatt“为

因为当5=5时为true,程序将继续运行,然后是5++,然后,正如您所看到的。

当i=5时,while条件的计算结果仍然为true,因此内部的代码块执行{}将再次运行一次,给出i=6和sum=21,此时while条件将设置为false,并打印值。

while条件(i)您使用的是do/while循环。该条件在执行块后进行计算,因此
i
确实变为6,您可以考虑在5=5时执行5++。但是,如果您在sum=sum+i下面计算出i++,那么sum得到15。我不明白为什么输出会因此而改变条件
i@ahazbatt“为什么输出会改变”:
i++
增加
i
的值-如果增加增加的值(+1)或未增加的值(
1 2 3 4 5 6
0 1 2 3 4 5
a
非常不同,而
循环将给出完全相同的结果(在本例中),结束条件是因子
class Main {

  public static void main(String[] args) {

int sum = 0;

int i = 0;

do{

  i++;

  sum = sum + i;

}

while (i <= 5);

System.out.print(i);

System.out.print(" ");

System.out.print(sum);


  }
}
1st do:

i=0 and sum = 0;
then, i++ // i = 1
sum = sum + i // sum = 1

2nd do: 
i++;  // i = i+1 i.e. i = 2
sum = sum +i // sum = 1 + 2 i.e. sum = 3

3rd do:
i++; // i =3
sum = sum +i // sum =3+3 =6

4th do:
i++; // i =4
sum = sum +i // sum =6+4 =10

5th do:
i++; // i =5
sum = sum +i // sum =10+5 =15

6th do: ( As i=5 and while condition i <= 5 is still true)
i++; // i =6
sum = sum +i // sum =15+6 = 26