2013-10-02 32 views
0

我很難試着讓這段代碼從5個空格開始,減少到0個空格,每行減去一個空格。非常基本的Java嵌套for循環問題

public class Prob3 { 

    public static void main(String[]args) { 

     for (int x=1; x<=5; x++) 
     { 
      for (int y=5; y>=1; y--) 
      { 
      System.out.print(" "); 
      } 
     System.out.println(x); 
     } 
    } 
} 

電流輸出是(應該是5個空格):

 5 
     4 
     3 
     2 
     1 

我很高興到目前爲止的進展,但我需要得到的東西接近這個:

 1 
     2 
    3 
    4 
5 

我覺得我很親密

+0

它這個功課? – Zac

+0

@Seb家庭作業在SO上被很好的接受,因爲OP自己嘗試過,並且已經表明了他/她在這個問題上的嘗試。 –

+2

沒關係!經過幾個小時的忙碌之後,我纔得到它。 Wohoo!編輯:謝謝大家的快速回復,第一次使用S.O. –

回答

6

改變你的內循環爲:

for (int y=5; y > x; y--) 

你會發現在每行上的空格的數量的圖案:

  • 行1 = 4空格
  • 行2 = 3空格
  • 行3 = 2空格
  • 等等..

所以,模式是,空白的數量是5 - rowNumber。在你的代碼中,外層循環表示rowNumber。內循環應運行5 - rowNumber次。這就是爲什麼條件應該是y > rowNumber,即y > x

+0

實際上內部循環條件應該是'y> x'。 –

+1

@cacho是的,修復它。謝謝:) –

+0

哦,好的!現在我可以看到它! +1 –

1

你的內部循環改成這樣:

for (int y=5; y>x; y--) 

全碼:

for (int x=1; x<=5; x++) 
{ 
    for (int y=5; y>x; y--) 
      System.out.print(" "); 

    System.out.println(x); 
} 
0

內for循環的表述應該是:

public class Prob3 { 
    public static void main(String[]args) { 
     for (int x = 0; x < 5; x++) { 
      for (int y = (4 - x); y > 0; y--) { 
       System.out.print(" "); 
      } 
      System.out.println(x + 1); 
     } 
    } 
} 

的問題是,你在開始每次5次。內循環中的(4-x)使最後一個數字(5)有0個前導空格。