2016-11-14 78 views
-5

也許有人可以幫忙!在java中填充2d數組

我需要輸出數組,看起來: https://i.stack.imgur.com/uafrY.jpg

但我有: https://i.stack.imgur.com/dOYt5.jpg

我需要在腳本改變?我不需要一個完整的腳本,只需要一些基本的想法,我可以如何改進它!

a = 1; 
for (i=0; i<=9; i++) 

    for (j=9-i; j>=6-i; j--) 
     if (j>=0) { 
      A[i][j] = a; a=a+1; 
+0

歡迎StackOverflow的。首先,您可以通過刪除鏈接來改善*問題*,並將輸出**文本**複製/粘貼到問題中,以便我們可以讀取/複製,比較您所指的文本,非常難以做到與圖像(因此,通常downvotes)。謝謝! – davedwards

+0

請提供您嘗試實施的完整源代碼,以更好地理解您的問題。沒有人會竊取你的代碼。 –

回答

0

下面是工作的代碼,這將產生所需的輸出:

public static void main(String[] args) { 
     int A[][] = new int[10][10]; 
     int a = 1; 
     for(int i = 0; i <= 9; i++) { 
      for(int j = 9 - i; j >= 6 - i; j--) { 
       if(j >= 0) { 
        A[9-i][j] = a; 
        a = a + 1; 
       } 
      } 
     } 

     for(int i = 0; i <= 9; i++) { 
      StringBuilder printString = new StringBuilder(); 
      for(int j = 0; j <= 9; j++) { 
       printString.append(A[i][j] + "\t"); 
      } 
      System.out.println(printString); 
     } 
    } 

產生輸出爲:

34 0 0 0 0 0 0 0 0 0 
33 32 0 0 0 0 0 0 0 0 
31 30 29 0 0 0 0 0 0 0 
28 27 26 25 0 0 0 0 0 0 
0 24 23 22 21 0 0 0 0 0 
0 0 20 19 18 17 0 0 0 0 
0 0 0 16 15 14 13 0 0 0 
0 0 0 0 12 11 10 9 0 0 
0 0 0 0 0 8 7 6 5 0 
0 0 0 0 0 0 4 3 2 1 
+0

將它們向後打印並不是解決方案以獲得陣列正確。問題是關於如何獲得正確的數組,而不是打印確切的輸出。 – Andreas

+0

@Andreas,解決方案很簡單,然後,而不是打印它,只需創建另一個數組並添加這些值。我沒有看到有什麼意見可以降低答案。 –

+0

我投了票,因爲答案是**沒有用**來解決正確構建*數組*的問題。而創建第二個數組幾乎不是正確的答案,當你所要做的就是正確地開始構建它。 – Andreas

0

1)當使用嵌套循環我發現它的幫助來命名循環變量rowcol來明確哪個是哪個。

2)使用遞減計數器(a)或通過遞增計數器向後循環通過行和列循環。

0

你的代碼幾乎在那裏,除了你有行顛倒。一個簡單的解決方法是在分配值時反轉行索引,即將A[i][j]更改爲A[9-i][j]

,將讓你在正確的結果,但是:

  • 如果檢查代碼,你會發現你在兩個地方做9 - i,所以也許i應倒數。

  • 您可以考慮advice of Extragorey來命名變量rowcol以闡明它們的含義。

  • 變量通常應該在首次使用時聲明。你沒有顯示你的聲明,所以我在下面添加了它們。

  • a = a + 1最好寫成a++,並且它可以內嵌完成,分配到A

  • 由於j正在倒計時,所以只需將j>=0檢查添加到循環條件中即可。

  • 您可以在for-loop初始化程序部分中聲明和初始化多個變量,只要它們具有相同的類型即可,其中ai可以執行此操作。從而

這裏是精製的代碼:

int[][] A = new int[10][10]; 
for (int row = 9, a = 1; row >= 0; row--) 
    for (int col = row; col >= row - 3 && col >= 0; col--) 
     A[row][col] = a++; 
for (int[] r : A) { 
    for (int v : r) 
     System.out.printf("%-4d", v); 
    System.out.println(); 
} 

輸出

34 0 0 0 0 0 0 0 0 0 
33 32 0 0 0 0 0 0 0 0 
31 30 29 0 0 0 0 0 0 0 
28 27 26 25 0 0 0 0 0 0 
0 24 23 22 21 0 0 0 0 0 
0 0 20 19 18 17 0 0 0 0 
0 0 0 16 15 14 13 0 0 0 
0 0 0 0 12 11 10 9 0 0 
0 0 0 0 0 8 7 6 5 0 
0 0 0 0 0 0 4 3 2 1