2015-11-17 55 views
1

我在編程類的測試研究,我似乎無法得到解決這個特定的實踐問題:基本的Java陣列 - 打印「金字塔」增加值

寫代碼,構建稱爲金字塔輸出以下數組的數組:

0 0 0 0 0 0 0 0 
0 1 1 1 1 1 1 1 
0 1 2 2 2 2 2 2 
0 1 2 3 3 3 3 3 
0 1 2 3 4 4 4 4 
0 1 2 3 4 4 5 5 
0 1 2 3 4 4 5 5 

正如你所看到的,它應該是相當簡單;在他們各自的索引上分配與該元素相對應的行號和列號 - 但我不能在我的生活中弄清楚這一點。

這裏是我到目前爲止有:

public static void main(String[] args) 
{ 
    int[][] list = new int[7][7]; 
    pyramid(list); 
    for(int row = 0; row < list.length; row++) 
    { 
     for (int column = 0;column < list[row].length; column++) 
     { 
      System.out.printf("%2d ", list[row][column]); 
     } 
     System.out.println(); 
    } 
} 
static void pyramid(int[][] input) 
{ 
    for(int r = 0; r < input.length; r++) 
    { 
     for(int c = 0; c < input[r].length; c++) 
     { 
      //what should go in here? 
     } 
    } 
} 

input[c][r] = r; 

在第二循環中的身體得到了我以往任何時候都更接近所需的輸出 - 雖然它仍然達不到。

輸出:

0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
0 1 2 3 4 5 6 
//arg! 

下一步是什麼?我應該從這裏做什麼?

任何幫助,非常感謝!

+0

提示。如果行號小於列號,那麼該值應該等於該行,反之亦然 – JackVanier

+0

@JackWilliams得到的是你需要的最大值(行,列) –

+0

@BenKnoble實際上你需要'min(row ,列)' – JackVanier

回答

6

在每個小區中的值是行號和列號的小:

input[c][r] = Math.min(c, r); 

對於感興趣,另一種方法是將每個值直接寫入到陣列中的適當位置:

for (int i = 0; i < pyramid.length; i++) { 
    for (int j = i; j < pyramid.length; j++) { 
     pyramid[i][j] = i; 
     pyramid[j][i] = i; 
    } 
} 
+0

是一個錯誤非常感謝,你是一個聖人!我一整天都在頭痛,試圖弄清楚這一點! – TheAtlasTheory

0
public class Pyramid { 
    public static void main(String[] args) { 
     int[][] list= { 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}, 
       {0, 1, 2, 3, 4, 5, 6}}; 
     pyramid(list); 
    } 
    static void pyramid(int[][] arg){ 
     for (int i = 0; i < arg.length; i++) { 
      for (int j = 0; j < arg[i].length; j++) { 
       System.out.print(Math.min(i, j)); 
      } 
      System.out.println(); 
     } 
    } 

} 
+1

對不起,問題表明數組必須被稱爲「金字塔」:-) – sprinter