2014-02-12 179 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--; 
}