【问题标题】:Initialize 2D array using nested for loops and finding a pattern使用嵌套的 for 循环初始化二维数组并找到一个模式
【发布时间】:2013-11-13 02:09:37
【问题描述】:

我试图弄清楚用于初始化变量的嵌套 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 循环语句的标题不会改变,而是赋值方程会改变。

【问题讨论】:

    标签: java loops logic


    【解决方案1】:
    for (int i = 0; i < row.length; i++) {
        for (int j = 0; j < row[j].length; j++) {
            row[i][j] = i + j * 9;
        }
    }
    

    【讨论】:

    • 我很好奇。我可以翻转 row[i][j] = ... 中的 j 和 i 使其变为 row[j][i]=...?我得到了我想要的答案,但从长远来看这会有什么不同吗?
    • 这取决于你在翻转什么......如果你的意思是j + i * 9,你当然可以这样做。
    • 是的,我真的应该在发帖之前多考虑一下sigh...谢谢您的回复。
    【解决方案2】:

    这行得通吗?

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

    【讨论】:

    • 它没有,我很抱歉。
    【解决方案3】:

    试试下面的代码:

        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-01-28
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多