[英]Initialize 2D array using nested for loops and finding a pattern
我試圖弄清楚嵌套變量的初始化循環是如何工作的。 我在這里看到了另一個問題,該問題在從1到15的2D數組中初始化了值,使用代碼似乎合理:
for (int i = 0; i < row.length; i++) {
for (int j = 0; j < row[0].length; j++) {
row[i][j] = (i * row[0].length) + j;
}
}
我正在嘗試擴展該想法,以便另一個數組具有如下模式:
{0, 9,18,27,36,45,54,63,72} //row0...row8
{ 1,10,19,28,37,46,55,64,73}
很明顯,一旦完成一行,數字就會增加1,並且您一直加9直到到達行末。 這在代碼中如何表示? 解決這個問題的方法很棒,但是,如果可能的話,更一般的方法將受到更多的贊賞。 我的猜測是for循環語句的標題不會更改,而是其分配方程式會更改。
這行得通嗎?
for(int i=0; i < 9; i++){
for(int j=0; j < 9; j++){
row[i][j] = j+i;
}
}
for (int i = 0; i < row.length; i++) {
for (int j = 0; j < row[j].length; j++) {
row[i][j] = i + j * 9;
}
}
嘗試以下代碼:
int[][] row = new int[9][9];
for (int i = 0; i < row.length; i++) {
row[i][0] = i;
for (int j = 1; j < row[i].length; j++) {
row[i][j] = row[i][j - 1] + 9;
}
}
/*
* Print 2d-array
*/
for (int i = 0; i < row.length; i++) {
for (int j = 0; j < row[i].length; j++) {
System.out.printf("%2d ", row[i][j]);
}
System.out.println();
}
在控制台中輸出:
0 9 18 27 36 45 54 63 72
1 10 19 28 37 46 55 64 73
2 11 20 29 38 47 56 65 74
3 12 21 30 39 48 57 66 75
4 13 22 31 40 49 58 67 76
5 14 23 32 41 50 59 68 77
6 15 24 33 42 51 60 69 78
7 16 25 34 43 52 61 70 79
8 17 26 35 44 53 62 71 80
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.