2016-08-01 44 views
0

我想打印一個由0開始並以9結尾的數字金字塔,當它等於9時,程序應該從0重新開始到9,等等......以0開頭的數字金字塔結尾爲9

這是我曾嘗試:

public static void main(String[] args) { 

    for (int i = 0; i < 10; i += 2) { 
     for (int j = 0; j < 10 - i; j += 2) { 
      System.out.print(" "); 
     } 
     for (int k = 0; k <= i; k++) { 
      System.out.print(" " + k); 
     } 
     System.out.println(); 
    } 
}   

其印刷

 0 
    0 1 2 
    0 1 2 3 4 
    0 1 2 3 4 5 6 
    0 1 2 3 4 5 6 7 8 

但我需要這個..

  0 
     1 2 3 
     4 5 6 7 8 
    9 0 1 2 3 4 5... 
+1

而你得到的是什麼? – Jens

+0

http://i.stack.imgur.com/wprNW.png我得到這個.. –

+0

提示:爲什麼你總是從0打印k? – venki421

回答

1

您打印k0開始爲i每次迭代打印0 1 2 3..每次。相反,請創建一個初始化爲0的局部變量並將其打印並每次增加一個。在你的情況下,你想從0開始計數,當counter值大於9時,你可以添加一個檢查,包括if(counter > 9) counter = 0;。新增以下代碼:

int counter = 0; 
for (int i = 0; i < 10; i += 2) { 
for (int j = 0; j < 20 - i; j++) { 
    System.out.print(" "); 
} 
for (int k = 0; k <= i; k++) { 
    System.out.print(" " + counter++); 
    if(counter > 9) counter = 0; 
} 

System.out.println(); 
} 

輸出

   0 
      1 2 3 
     4 5 6 7 8 
     9 0 1 2 3 4 5 
    6 7 8 9 0 1 2 3 4 

DEMO

+0

爲什麼'j <20'?這隻會縮小金字塔,可能不會被通緝。而不是如果增加計數器,你可以做'System.out.print(「」+(counter ++%10));'。 – Thomas

+0

好的工作(不)。現在他只能複製你的代碼,錯過了調試自己代碼的學習經驗。 –

+0

@Thomas是'j <20'是可選的我添加了額外的空間。我發佈了首先出現在我腦海中的代碼,但是感謝其他解決方案。 – silentprogrammer

0

您可以有一個變量並每次增加它。

public static void main(String[] args) { 
    int count=0; 
    for (int i = 0; i < 10; i += 2) { 
     for (int j = 0; j < 10 - i; j += 2) { 
      System.out.print(" "); 
     } 
     for (int k = 0; k <= i; k++) { 
      System.out.print(" " + count++); 
      if(count>9) 
       count=count%10; 
     } 

     System.out.println(); 
    } 
}