0

変数を初期化するためのネストされた for ループがどのように機能するかを理解しようとしています。コードを使用して妥当と思われる 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 ループ ステートメントの見出しは変更されませんが、代わりに代入式が変更されます。

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 に答える