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

     } 
    } 

循环和后增量如何在此程序中工作。这段代码如何将输出作为7输出?

+4

拿支铅笔和纸,用手工作,通过。 –

+1

使用一个调试器,你会看到 – Jens

+2

第一个提示:展开每个循环,使其具有花括号的身体,然后你可以在体内添加日志记录... –

回答

4

看看它工作嵌套while循环。

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); 
+0

当我得到增加到4然后两个while循环条件得到错误,所以它应该打印i = 5,但not.How我得到增加到6和7. –

+0

当我变量值= 4,因为<= 4然后做while循环条件变为真后n增量调用(i ++)mins i = 5然后while(i ++ <= 2)条件变为false并且增量i ++调用mins i = 6然后while循环条件变为false并且增量后调用mins i = 7 。这就是为什么它放弃了7。 – halim

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"); 

后,你看到的结果,你会看到“我”变量是如何增量从1到7和whitch位置它正在发生。你需要知道,在条件i ++ < = 2,如果输入“我”是2,第一件事将是2 < = 2(真),然后“我”会得到它的递增值3.在下一回合,你会检查3 < = 4(false)但是因为你有i ++,它仍然会得到他的增量值4. 运行上面的代码,看看增量的真实发生位置。

1

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

无论答案如何,哈利姆的解决办法是什么我谈论:

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