トップに戻る

多次元配列(2次元配列)の考え方

表の「行」と「列」を、添字で指定して取り出す

配列を表として見る int[][]
int[][] data = {
  {31, 21, 11},
  {12, 13, 14}
};

// data[行][列] の順番で指定する
println(data[0][0]); // 31
println(data[1][2]); // 14
添字で要素を確認 data[row][col]
外側の添字 中に入っている配列

data[0] の中に {31, 21, 11}data[1] の中に {12, 13, 14} が入っています。

data[0][0] 31
押さえるポイント 行・列・長さ
1

new double[5][6] は 5行6列

double[][] array = new double[5][6]; と書くと、5個の行があり、各行に6個の値を入れられる表が作られます。

2

添字は 0 から始まる

1行目は [0]、2行目は [1] です。列も同じで、左から [0], [1], [2] と数えます。

3

length で回数を決める

data.length は行数、data[i].length は i行目の列数です。二重ループで全要素を順番に扱えます。

二重ループで列ごとに読む for
int[][] scores = {
  {1, 2, 3},
  {5, 6, 7},
  {8, 9, 0}
};

for (int j = 0; j < 3; j++) {
  for (int i = 0; i < scores.length; i++) {
    println(i + ", " + j + ", " + scores[i][j]);
  }
}

        
平均を求める時の形 授業内課題 5
int[][] person = {
  {21, 186, 75},
  {22, 175, 50},
  {19, 190, 80},
  {22, 168, 57}
};

int[] average = new int[3];

for (int i = 0; i < average.length; i++) {
  average[i] = 0;
  for (int j = 0; j < person.length; j++) {
    average[i] += person[j][i];
  }
  average[i] /= person.length;
}

println("年齢の平均:" + average[0]);
println("身長の平均:" + average[1]);
println("体重の平均:" + average[2]);
外側の i 0なら年齢、1なら身長、2なら体重。どの列を合計するかを表します。
内側の j 0人目から3人目までを順に動きます。人数分だけ足し合わせます。
person[j][i] j人目の i番目の値を取り出します。列ごとの平均を作る時の中心です。