这是我无法理解的行为。
class loop1 {
public static void main(String args[]) {
int i = 10;
do
while(i++ < 15) {
System.out.println(i);
i = i + 20;
System.out.println(i);
}
while(i<2);
System.out.println(i);
}
}
我希望它能打印
11
31
31
但它打印
11
31
32
我无法理解为什么这个“32”出现在输出中。
这是我对流程的理解
有人可以告诉我我错过了什么吗?
答案 0 :(得分:5)
在第一次while循环i++
的最终评估期间,即使由于条件失败而未执行循环,i
仍会递增class loop1 {
public static void main(String args[]) {
//1. i = 10
int i = 10;
do
// 2. while loop condition = (10 < 15), i = 11
// 6. while loop condition = (31 < 15), i = 32
while(i++ < 15) {
System.out.println(i); //3. prints 11
i = i + 20; //4. i = 31
System.out.println(i); //5. prints 31
}
while(i<2); //this really has no effect on the codes execution, given i values
System.out.println(i); //7. Prints 32
}
}
。
{{1}}
答案 1 :(得分:4)
i++
您将值增加1.当您在第一次迭代后增加值31
时,该值。令人惊讶的是,31 + 1
32
。并且在递增后直接打印出值。
答案 2 :(得分:2)
在第二次迭代时,while循环的条件是检查
while(i++<15)
那时i is 31
因此条件失败但i++
更改i 31 -> 32
的值
答案 3 :(得分:2)
while(i++ < 15)
将i的值与该增量之后的i进行比较1
答案 4 :(得分:1)
我的猜测是:
while(i++ < 15)
i++
在第二个循环上将值从31增加到32。
注意,即使条件失败,也会执行++
- 在您的情况下,31大于15(条件失败),但是由于++
值增加到32,正在由System.out
打印出来。
答案 5 :(得分:0)
在该计划中:
while(i++<15)
以上语句是本声明中的条件检查 你是后期增量因此31 + 1 = 32即将来临