多次元配列は「表」や「グリッド」のように、行と列でデータを管理できる仕組みです。ここでは 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次元配列の基本操作はほぼマスターできます。


