也許有人可以幫忙!在java中填充2d數組
我需要輸出數組,看起來:
但我有:
我需要在腳本改變?我不需要一個完整的腳本,只需要一些基本的想法,我可以如何改進它!
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;
也許有人可以幫忙!在java中填充2d數組
我需要輸出數組,看起來:
但我有:
我需要在腳本改變?我不需要一個完整的腳本,只需要一些基本的想法,我可以如何改進它!
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;
下面是工作的代碼,這將產生所需的輸出:
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
1)當使用嵌套循環我發現它的幫助來命名循環變量row
和col
來明確哪個是哪個。
2)使用遞減計數器(a
)或通過遞增計數器向後循環通過行和列循環。
你的代碼幾乎在那裏,除了你有行顛倒。一個簡單的解決方法是在分配值時反轉行索引,即將A[i][j]
更改爲A[9-i][j]
。
,將讓你在正確的結果,但是:
如果檢查代碼,你會發現你在兩個地方做9 - i
,所以也許i
應倒數。
您可以考慮advice of Extragorey來命名變量row
和col
以闡明它們的含義。
變量通常應該在首次使用時聲明。你沒有顯示你的聲明,所以我在下面添加了它們。
a = a + 1
最好寫成a++
,並且它可以內嵌完成,分配到A
。
由於j
正在倒計時,所以只需將j>=0
檢查添加到循環條件中即可。
您可以在for-loop初始化程序部分中聲明和初始化多個變量,只要它們具有相同的類型即可,其中a
和i
可以執行此操作。從而
這裏是精製的代碼:
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
歡迎StackOverflow的。首先,您可以通過刪除鏈接來改善*問題*,並將輸出**文本**複製/粘貼到問題中,以便我們可以讀取/複製,比較您所指的文本,非常難以做到與圖像(因此,通常downvotes)。謝謝! – davedwards
請提供您嘗試實施的完整源代碼,以更好地理解您的問題。沒有人會竊取你的代碼。 –