2016-08-13 66 views
-5

我目前正在學習Java中的數組。然而,我無法創建對稱表,類似如下:在java中創建簡單對稱表

enter image description here

有一個簡單的解決方案來創建一個這樣的數組?這不是作業,而是我正在學習的考試。我想知道如何做到這一點。

在此先感謝

這裏是我的代碼:

int [][] table = new int [5] [8]; 
for (i=0;i < 5; i ++) 
{ 
    table[i][0] = i+1; 
} 

for (j = 0; j < 4; j ++) 
{ 
    table[ i ][ j ] = ; 
} 

它沒有太多的代碼,但我不知道如何來遍歷它使所有的值是對稱的。我填充了第一行的值。我正在考慮在列中循環到4,所以我在一半,但是我該怎麼做?

+1

請告訴我們你的算法 – ByeBye

+0

難道這應該是一個二維數組,或者只是一維的?無論如何,向我們展示你到目前爲止所嘗試過的。我們是開發者,我們想看代碼。

+0

把代碼放在你的問題中。你可以編輯你的問題。使用'{}'符號將您的代碼轉換爲行格式的代碼。 –

回答

0

您的代碼是一個開始,但並未填充所有值。你應該嵌套你的for-loops,並且只填充左邊的部分。然後可以從左邊的條目鏡像正確的條目。試試這個:

public static void main(String[] args) 
{ 
    int[][] table = new int[5][8]; 

    for (int row = 0; row < 5; row++) 
    { 
     for (int column = 0; column < 4; column++) 
     { 
      // left side entry [row][0..3] 
      // each entry is 5 more than the entry left of it 
      table[row][column] = column * 5 + row + 1; 

      // right side entry [row][7..4] mirrored from corresponding entry [row][0..3] 
      // i.e. column 7 <- column 0, column 6 <- column 1, etc. 
      table[row][7 - column] = table[row][column]; 
     } 
    } 

    for (int row = 0; row < 5; row++) 
    { 
     for (int column = 0; column < 8; column++) 
     { 
      System.out.format("%4d", table[row][column]); 
     } 
     System.out.println(); 
    } 
} 

輸出:

1 6 11 16 16 11 6 1 
    2 7 12 17 17 12 7 2 
    3 8 13 18 18 13 8 3 
    4 9 14 19 19 14 9 4 
    5 10 15 20 20 15 10 5 
+0

非常感謝。我還有一個問題,請您詳細說明一下這個代碼: table [i] [j] = j * 5 + i + 1; table [i] [7-j] = table [i] [j]; 爲什麼你使用j * 5 + i + 1然後在列表[i] [7-j]中? 我真的不明白你使用的迭代。 –

+0

我將'i'和'j'改名。看看你的桌子。如果你從左到右,在左側,每個條目比它剩下的一個多5個。這解釋了「列* 5 +行+1」部分。要鏡像,可以看到第7列中的值與第0列中的值相同,第1列中的值與第6列中的值相同,換句話說:「n」列中的值與第6列中的值相同在'7 - n'列中。 –

+0

@ L.T,通常你會接受最好的解決方案。接受點擊分數下方的「V」形圖標(答案左側)。如果你想提高我的答案,請做到這一點(點擊答案左側向上顯示的三角形) –