使用嵌套for循环初始化2D数组并查找模式

时间:2013-11-13 02:09:38

标签: java loops logic

我正在试图弄清楚嵌套for循环初始化变量是如何工作的。我在这里看了另一个问题,在2D数组中初始化值从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循环语句的标题不会改变,而是它的赋值方程式。

3 个答案:

答案 0 :(得分:1)

这会有用吗?

for(int i=0; i < 9; i++){
  for(int j=0; j < 9; j++){
    row[i][j] = j+i;
  }
}

答案 1 :(得分:1)

for (int i = 0; i < row.length; i++) {
    for (int j = 0; j < row[j].length; j++) {
        row[i][j] = i + j * 9;
    }
}

答案 2 :(得分: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