使用后增量控制while循环的流程

时间:2015-03-16 12:17:15

标签: java while-loop

我无法弄清楚以下代码段如何将13打印为输出。据我所知,while条件应该保持循环,因为i在这种情况下始终小于10。我试过调试,但无法搞清楚。有人可以解释一下吗?

public class WhileCondition2 
{
   public static void main(String... args)
   {
       int i = 10;
       while (i++ <= 10) 
       {
           i++;
       }
       System.out.print(i);
   }
}

6 个答案:

答案 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)

  1. 您将i设置为10将输出10
  2. 您的循环while i少于或等于10
  3. 您在i++之后会增加这意味着首先检查条件i <= 10,然后完成增量输出11
  4. 然后进入循环,因为i在启动循环时1011,现在为12,然后将其增加到12,将打印{{1} }
  5. 循环再次出现在案件中。 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值。

希望这有帮助。