这个片段如何将输出设为7?

时间:2016-09-23 08:41:49

标签: java loops while-loop output do-while

public class YourClassNameHere {
        public static void main(String[] args) {
          int i = 1;
          do 
          while(i++ <= 2);
          while(i++ <= 4);
          System.out.println(i);

        }
    }

循环和后增量如何在此程序中起作用。

3 个答案:

答案 0 :(得分:4)

看看它在循环时嵌套工作。

 int i = 1;
      do {
      System.out.println("start"+i);
      while(i++ <= 2)System.out.println("inner while loop "+i);
      }
      while(i++ <= 4)System.out.println("outer while loop"+i);
      System.out.println("final ans"+i);

答案 1 :(得分:2)

正如halim所说你有嵌套循环。在代码中添加一些System.out.println并查看结果。

示例:

 int i = 1;      
 do
 {
    System.out.println("i = " + i + " on position: outer loop start");
    while (i++ <= 2)
    {
      System.out.println("i = " + i + " on position: inner while loop");          
    }
    System.out.println("i = " + i + " on position: outer while loop");
  } while (i++ <= 4);

  System.out.println("i = " + i + " on position: final result");

在看到结果后,您将看到“i”变量如何从1增加到7以及它发生的位置。你需要知道,在条件i ++&lt; = 2,如果输入“i”为2,则第一个将是2&lt; = 2(真),之后“i”将得到它的增量值3.在下一个传递中你将检查3&lt; = 4(假)但是因为你有i ++它仍然会得到他的增量值4。 运行上面的代码,看看增量实际发生的位置。

答案 2 :(得分:1)

简单地说,你没有使用足够的括号。我建议在所有''','if'等中使用括号,否则你可能会得到意想不到的结果(比如在这里?)。你想看到任何特定的输出,或者为什么在这种情况下你会得到7?

无论答案如何,halim的解决方案就是我所说的:

do {
while (i++ <= 2);
}
// remaining code in here