我无法弄清楚以下代码段如何将13打印为输出。据我所知,while条件应该保持循环,因为i
在这种情况下始终小于10
。我试过调试,但无法搞清楚。有人可以解释一下吗?
public class WhileCondition2
{
public static void main(String... args)
{
int i = 10;
while (i++ <= 10)
{
i++;
}
System.out.print(i);
}
}
答案 0 :(得分:13)
第一次迭代:
while (i++ <= 10) { // i++ returns 10, so condition is true, i becomes 11
i++; // i becomes 12
}
第二次迭代:
while (i++ <= 10) // i++ returns 12, so condition is false, i becomes 13
因此i
的最终值为13。
答案 1 :(得分:5)
您正在使用发布增量
while (i++ <= 10) { // i will be incremented after evaluating i and do comparaison with 10
i++;
}
您可以使用预增量而不是增量后
while (++i <= 10) { // i will be incremented before comparaison
i++;
}
i
的值为11
。
答案 2 :(得分:2)
在i
等于10
后,它会在检查后递增一次,i
变为11
。然后循环体中的增量发生i = 12
。最后检查条件i = 12
,并且正如预期的那样,结果是假的。但条件部分的增量将永远发生。这就是它打印13
。
答案 3 :(得分:2)
i
设置为10
将输出10
while i
少于或等于10
i++
之后会增加这意味着首先检查条件i <= 10
,然后完成增量输出11
i
在启动循环时10
为11
,现在为12
,然后将其增加到12
,将打印{{1} } i = 12
更多10
,循环结束但条件失败后仍然完成i++
,i
现在 13 答案 4 :(得分:1)
你在while语句中增加一次,在循环中增加一次,你应该做一个或另一个。
答案 5 :(得分:0)
是输出为13的原因如下
i的陈述值为10.
当它进入while循环时,i ++&lt; = 10为真,因为i == 10并进入循环,但在进入循环之前,由于后增量运算符,i增加到11。
一旦进入循环,i再次使用循环中的后增量运算符再次增加到12。
接下来,i在while(i ++&lt; = 10)中再次进行测试,并且因为我是12而是假的。但在它退出循环之前,它再次由使其增加的后增量运算符递增。
这是输出到java控制台窗口的内容,
要记住的是,即使while循环条件为false,它仍然会增加i值。
希望这有帮助。