導入
座標や表(行と列)のように、縦横2方向に広がるデータを扱いたいことがあります。そんなときに使うのが2次元配列です。「配列の配列」と考えるとイメージしやすくなります。
説明
public class Main {
public static void main(String[] args) {
int[][] grid = {
{1, 2, 3},
{4, 5, 6}
};
System.out.println(grid[0][0]); // 1行目・1列目 → 1
System.out.println(grid[1][2]); // 2行目・3列目 → 6
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
System.out.print(grid[i][j] + " ");
}
System.out.println();
}
}
}
int[][] grid = { {1,2,3}, {4,5,6} };…{}を入れ子にすることで、行ごとにまとまった2次元配列を作れます。ここでは「2行×3列」の表になっています。grid[0][0]…[行番号][列番号]の順でアクセスします。どちらも0から数えるので、grid[1][2]は「2行目・3列目」の値です。grid.length… 行数(外側の配列の要素数)。grid[i].length…i行目の列数。- 全要素を巡るには、forを2重にネストします。外側で行、内側で列を回すのが定番の書き方です。
やってみよう
下のエディタで grid の値や行・列数を増やして、2重ループの出力がどう変わるか確かめましょう。
演習
int[][] table = { {1, 2}, {3, 4}, {5, 6} }; の全要素の合計を2重ループで求めて表示してください(結果は 21)。
ヒント1を見る
int total = 0; を用意し、for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { total += table[i][j]; } }。
ヒント2を見る
最後に System.out.println(total);。