0

我试图弄清楚用于初始化变量的嵌套 for 循环是如何工作的。我在这里查看了另一个问题,将二维数组中的初始化值从 1 到 15,这使用代码似乎是合理的:

 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 循环语句的标题不会改变,而是它的赋值方程会改变。

4

3 回答 3

1

这行得通吗?

for(int i=0; i < 9; i++){
  for(int j=0; j < 9; j++){
    row[i][j] = j+i;
  }
}
于 2013-11-13T02:14:13.130 回答
1
for (int i = 0; i < row.length; i++) {
    for (int j = 0; j < row[j].length; j++) {
        row[i][j] = i + j * 9;
    }
}
于 2013-11-13T02:15:51.197 回答
1

试试下面的代码:

    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 
于 2013-11-13T02:21:33.187 回答