Java | 多次元配列の練習問題

Java Java
スポンサーリンク

多次元配列は「表」や「グリッド」のように、行と列でデータを管理できる仕組みです。ここでは 2次元配列 を中心に、初心者が段階的に練習できる問題を用意しました。すべてに 解答例と解説 をつけています。


基礎編(1〜3)

問題1:2次元配列の作成と代入

3行2列の int 配列を作り、次の値を代入して表示してください。

1 2
3 4
5 6

解答例

int[][] matrix = new int[3][2];
matrix[0][0] = 1; matrix[0][1] = 2;
matrix[1][0] = 3; matrix[1][1] = 4;
matrix[2][0] = 5; matrix[2][1] = 6;

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();
}
Java

解説
matrix[行][列] でアクセス。二重for文で全要素を表示。


問題2:初期化と表示

次の2次元配列を一度に初期化して表示してください。

10 20 30
40 50 60

解答例

int[][] data = {
    {10, 20, 30},
    {40, 50, 60}
};

for (int i = 0; i < data.length; i++) {
    for (int j = 0; j < data[i].length; j++) {
        System.out.print(data[i][j] + " ");
    }
    System.out.println();
}
Java

解説
波括弧 {} を使えば一度に初期化できる。


問題3:行と列の長さを表示

上の配列 data の「行数」と「列数」を表示してください。

解答例

System.out.println("行数: " + data.length);
System.out.println("列数: " + data[0].length);
Java

解説

  • data.length → 行数
  • data[0].length → 1行目の列数

応用編(4〜7)

問題4:合計値を求める

次の配列の全要素の合計を求めて表示してください。

1 2 3
4 5 6

解答例

int[][] nums = {
    {1, 2, 3},
    {4, 5, 6}
};

int sum = 0;
for (int i = 0; i < nums.length; i++) {
    for (int j = 0; j < nums[i].length; j++) {
        sum += nums[i][j];
    }
}
System.out.println("合計: " + sum);
Java

解説
二重ループで全要素を取り出して加算。


問題5:行ごとの合計

上の配列で、各行の合計を表示してください。

解答例

for (int i = 0; i < nums.length; i++) {
    int rowSum = 0;
    for (int j = 0; j < nums[i].length; j++) {
        rowSum += nums[i][j];
    }
    System.out.println("行 " + i + " の合計: " + rowSum);
}
Java

解説
外側ループごとに合計変数をリセットして計算。


問題6:列ごとの合計

同じ配列で、各列の合計を表示してください。

解答例

for (int j = 0; j < nums[0].length; j++) {
    int colSum = 0;
    for (int i = 0; i < nums.length; i++) {
        colSum += nums[i][j];
    }
    System.out.println("列 " + j + " の合計: " + colSum);
}
Java

解説
列を固定して行を回すと「縦方向の合計」が求められる。


問題7:最大値を求める

次の配列の最大値を求めて表示してください。

7 2 9
4 6 3

解答例

int[][] nums = {
    {7, 2, 9},
    {4, 6, 3}
};

int max = nums[0][0];
for (int i = 0; i < nums.length; i++) {
    for (int j = 0; j < nums[i].length; j++) {
        if (nums[i][j] > max) {
            max = nums[i][j];
        }
    }
}
System.out.println("最大値: " + max);
Java

解説
最初の要素を「仮の最大値」にして比較。


発展編(8〜10)

問題8:転置行列

次の配列を「行と列を入れ替えた配列」にして表示してください。

1 2
3 4
5 6

解答例

int[][] nums = {
    {1, 2},
    {3, 4},
    {5, 6}
};

int[][] transpose = new int[2][3];
for (int i = 0; i < nums.length; i++) {
    for (int j = 0; j < nums[i].length; j++) {
        transpose[j][i] = nums[i][j];
    }
}

for (int i = 0; i < transpose.length; i++) {
    for (int j = 0; j < transpose[i].length; j++) {
        System.out.print(transpose[i][j] + " ");
    }
    System.out.println();
}
Java

解説
transpose[列][行] = 元[行][列] で入れ替える。


問題9:対角線の合計

次の正方行列の「左上から右下の対角線」の合計を求めてください。

1 2 3
4 5 6
7 8 9

解答例

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

int sum = 0;
for (int i = 0; i < matrix.length; i++) {
    sum += matrix[i][i];
}
System.out.println("対角線の合計: " + sum);
Java

解説
対角線は「行番号と列番号が同じ要素」。


問題10:二次元配列の検索

次の配列から「値が6の位置(行と列)」を探して表示してください。

2 4 6
8 10 12

解答例

int[][] nums = {
    {2, 4, 6},
    {8, 10, 12}
};

for (int i = 0; i < nums.length; i++) {
    for (int j = 0; j < nums[i].length; j++) {
        if (nums[i][j] == 6) {
            System.out.println("行: " + i + ", 列: " + j);
        }
    }
}
Java

解説
二重ループで全要素をチェックし、条件一致したら位置を表示。


✅まとめ

  • 基礎編: 作成・初期化・長さ
  • 応用編: 合計・行列ごとの処理・最大値
  • 発展編: 転置・対角線・検索

これらを練習すれば、2次元配列の基本操作はほぼマスターできます。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました