では「多次元配列(特に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")で桁を揃えて表示。- 出力はビンゴカードのような表になる。
✅ まとめ
- 初級: 合計・平均など基本操作。
- 中級: 最大最小・転置など応用。
- 上級: ジャグ配列やビンゴカードのような実用的な形。
👉 次のステップとして「配列とメソッドの組み合わせ」や「配列とクラスの組み合わせ」に進むと、さらに実践的なプログラミング力がつきます。
