本文へスキップ
BecomeCoder

Java文法コース · 第5章 配列 ― 複数のデータをまとめて扱う · レッスン23

2次元配列 ― 表形式のデータ

ブラウザで完結

導入

座標や表(行と列)のように、縦横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].lengthi行目の列数。
  • 全要素を巡るには、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);

実際に動かしてみよう

下のエディタにJavaを書いて「実行」を押すと、学習用シミュレータが System.out.println の出力を表示します(本物のJVMではなく、教材の範囲を再現した軽量エンジンです)。クラス・継承・コレクションなども動きます。Scanner で入力を読む例は「標準入力」欄に値を入れてください。本文の例を書き換えて動かしてみましょう(Stream・ラムダ・スレッド・ファイル入出力など一部の機能は対象外です)。

Java — ブラウザ内で実行(学習用シミュレータ)

Javaの教材サブセットを動かす学習用シミュレータを読み込みます(本物のJVMではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。