Java do while循环增量

3
int i = 10; 
int j = 0; 
do { 
    j++; 
    System.out.println("loop:" + j); 
    while (i++ < 15) {                //line6 
         i = i + 20; 
         System.out.println(i); 
    } ; 
} while (i < 2); 
System.out.println("i_final:" + i); 

输出:

loop:1 
31 
i_final:32

为什么 i_final32 而不是 31?我们可以看到 do_while 循环只执行了一次,因此第8行也应该只执行了一次,从而将 "i" 的值增加1。那么什么时候把 31 增加到 32

4
while循环的内容已经执行过一次,但条件被检查了两次。 - JJJ
3个回答

3
在中断之前,while循环将被执行两次。
while (i++ < 15) {                //line6 
                i = i + 20; 
                System.out.println(i); 
            } ;

首先它增加到11。

检查是否为15。返回true。

现在它增加到31。(i = i + 20

现在再次进入while循环。

它增加了这个值。


2
当您使用 while 循环时,如 (i++ < 15),它会检查条件并在 i++ 小于 15 时停止循环。但是在这里,当您使用 do while 循环 j++ 时,循环执行两次,然后在 while (i++ < 15) 时增加 i 的值 1 并停止... 因此在第二个循环中,i 的值增加了一个,但是 while 循环内的函数仍然相同,因为它在 i++ 大于 15 时停止。
如果您执行以下操作,则会得到 31。
int i = 10; 
int j = 0; 
    do { 
    j++; 
    System.out.println("loop:" + j); 
    while (i < 15) {                //line6 
         i++
         i = i + 20; 
         System.out.println(i); 
    } ; 
} while (i < 2); 
System.out.println("i_final:" + i); 

我认为你的意思是放置 do{}while(j<2) ... 在 do while 循环的末尾,而不是在 i < 2 的末尾。 - TMNT

2

当while循环检查条件时首次i=11,之后i增加20,因此i=31。然后再次检查while条件,发现31 < 15为false,i仍然增加1。所以i=32


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接