Java | レベル別の練習問題:多次元配列(2次元配列)

Java Java
スポンサーリンク

では「多次元配列(特に2次元配列)」を題材に、レベル別の練習問題 → 解答例 → 解説を用意しました。初心者からステップアップできるように構成しています。


初級編

問題1:合計を求める

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

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

解答例:

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

解説:

  • a.length は行数(ここでは2)。
  • a[i].length はその行の列数。
  • 2重ループで全要素を走査。結果は 21

問題2:行ごとの平均

各行の平均値を求めて表示してください。

解答例:

for (int i = 0; i < a.length; i++) {
    int sum = 0;
    for (int j = 0; j < a[i].length; j++) {
        sum += a[i][j];
    }
    double avg = (double) sum / a[i].length;
    System.out.println("行" + i + "の平均 = " + avg);
}
Java

解説:

  • 行ごとに合計を出して平均を計算。
  • (double) をつけることで小数点まで表示できる。

中級編

問題3:最大値と最小値

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

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

解答例:

int max = b[0][0];
int min = b[0][0];

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

解説:

  • 最初の要素で初期化。
  • ループで比較しながら更新。
  • 結果は最大値 9、最小値 1

問題4:転置行列

次の配列を転置(行と列を入れ替え)して表示してください。

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

解答例:

int[][] transposed = new int[c[0].length][c.length];

for (int i = 0; i < c.length; i++) {
    for (int j = 0; j < c[i].length; j++) {
        transposed[j][i] = c[i][j];
    }
}

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

解説:

  • 転置後のサイズは「列数×行数」。
  • 式は transposed[j][i] = c[i][j]
  • 出力は: 1 4 2 5 3 6

上級編

問題5:ジャグ配列の活用

行数3で列数が 2, 4, 3 のジャグ配列を作り、各要素に「行番号×列番号」を代入して表示してください。

解答例:

int[][] jagged = new int[3][];
jagged[0] = new int[2];
jagged[1] = new int[4];
jagged[2] = new int[3];

for (int i = 0; i < jagged.length; i++) {
    for (int j = 0; j < jagged[i].length; j++) {
        jagged[i][j] = i * j;
    }
}

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

解説:

  • ジャグ配列は「行ごとに列数が違う」配列。
  • 各行を new int[列数] で作成。
  • 値は i*j で代入。
  • 出力例: 行0: 0 0 行1: 0 1 2 3 行2: 0 2 4

問題6:ビンゴカード風(応用)

5×5の配列を作り、1〜25の数字を順番に入れて表示してください。

解答例:

int[][] bingo = new int[5][5];
int num = 1;

for (int i = 0; i < bingo.length; i++) {
    for (int j = 0; j < bingo[i].length; j++) {
        bingo[i][j] = num++;
    }
}

for (int i = 0; i < bingo.length; i++) {
    for (int j = 0; j < bingo[i].length; j++) {
        System.out.printf("%2d ", bingo[i][j]);
    }
    System.out.println();
}
Java

解説:

  • num++ で1から25まで順番に代入。
  • printf("%2d") で桁を揃えて表示。
  • 出力はビンゴカードのような表になる。

✅ まとめ

  • 初級: 合計・平均など基本操作。
  • 中級: 最大最小・転置など応用。
  • 上級: ジャグ配列やビンゴカードのような実用的な形。

👉 次のステップとして「配列とメソッドの組み合わせ」や「配列とクラスの組み合わせ」に進むと、さらに実践的なプログラミング力がつきます。

タイトルとURLをコピーしました