2017-09-05 47 views
1

我試圖讓計數金字塔:倒計時金字塔錯誤

 1 
    121 
    12321 
    1234321 
    123454321 

這是我的代碼

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

但是這一直給我的輸出

 1 
    222 
    33333 
    4444444 
555555555 

如何我可以讓我的金字塔的右側倒計時

+0

我刪除了JavaScript標記並添加了Java,因爲語法顯然是Java語法。 –

回答

3

這是一個工作實現。您對問題的處理方式對我來說似乎很好,但第三個內部迴路有問題。它不是從1往上數,而是倒數。相反,只需使用單個外部循環的方法來覆蓋金字塔的每一行以及三個內部循環。第一個循環可以打印空格,接下來的兩個分別計數,然後分別計數。

int row = 1; 
for (int i=1; i<=5; i++) { 
    for (int o=1; o<=5-i; o++) { 
     System.out.print(" "); 
    } 
    for (int k=1; k<=i; k++) { 
     System.out.print(k); 
    } 
    for (int k = i-1; k >= 1; k--){      
     System.out.print(k); 
    } 
    System.out.println(); 
    row++; 
} 

輸出:

1 
    121 
    12321 
1234321 
123454321 

演示在這裏:

Rextester

+0

@GillesGouaillardet對我來說工作得很好 –

1

這是打印金字塔的方法:

public void print(int height) { 
    for (int i=0; i<height; i++) { 
     for (int j=height; j>=1; j--) { 
      if (j <= i+1) { 
       System.out.print(j); 
      } else { 
       System.out.print(" "); 
      } 
     } 

     for (int j=2; j<=height; j++) { 
      if (j <= i+1) { 
       System.out.print(j); 
      } else { 
       System.out.print(" "); 
      } 
     } 

     System.out.print("\n"); 
    } 
}