2014-02-12 46 views
0

我是Java的新手,我想了解嵌套while循环。我试图写一个程序,将打印输出如下:嵌套while循环逻辑错误

999999999 on the top line, 
88888888 on the next, 
7777777 etc, 
666666 etc, 
55555 
4444 
333 
22 
1 

我很容易就能做到这一点使用一个for循环,但现在我想要做同样的While循环。问题是我的代码在当前状态下只打印第一行的九个字符,然后看起来内部的While循环不再运行。

我非常困惑,我不认为我的任何标准都是重言式,但我不太了解重言式。请解释我的循环逻辑有什么问题。循环对我来说仍然是很多神秘的巫术。

int outer = 9; 
int inner = 1; 

while (outer >= 1) 
    { 
     while(inner <= outer) 
      { 
       System.out.print(outer); 
       inner++; 
      } 
     System.out.println(); 
     outer--; 
    } 

回答

1

您必须在第二个while循环后重置inner的值。

while (outer >= 1){ 
     while(inner <= outer){ 
       System.out.print(outer); 
       inner++; 
     } 
     inner = 1; 
     System.out.println(); 
     outer--; 
} 

还要注意,快速使用调试器,或者干脆用笔和纸来看看有哪些在每次迭代每个变量的值,将让你看到这个多快问这个问题在这里。

+1

我只是当我贴出笑意识到这一点从字面上。感谢您的帮助!我觉得自己像个菜鸟。 – FluffyKittens

+0

@ user2993456我通常会发现它有帮助(当我学习时)通过在循环的每个状态下记下变量的值来在一张纸上干运行代码。 – noMAD

+0

感谢您的建议。我这次超越了自己,但我肯定会在未来尝试你的方法! – FluffyKittens

0

您需要重置每次inner

while (outer >= 1) { 
    inner = 1; // ADD THIS LINE 
    while(inner <= outer) 
     { 
      System.out.print(outer); 
      inner++; 
     } 
    System.out.println(); 
    outer--; 
}