三次元配列は「立方体」や「箱の中に箱がある」イメージで、配列の中に配列があり、それがさらに配列を持つ構造です。
ここでは初心者が段階的に理解できるように、基礎 → 応用 → 発展 の順で練習問題を用意しました。すべてに 解答例と解説 をつけています。
基礎編(1〜3)
問題1:三次元配列の作成と代入
2×2×2 の int 配列を作り、次の値を代入して表示してください。
層0:
1 2
3 4
層1:
5 6
7 8
解答例
int[][][] cube = new int[2][2][2];
cube[0][0][0] = 1; cube[0][0][1] = 2;
cube[0][1][0] = 3; cube[0][1][1] = 4;
cube[1][0][0] = 5; cube[1][0][1] = 6;
cube[1][1][0] = 7; cube[1][1][1] = 8;
for (int i = 0; i < cube.length; i++) {
System.out.println("層 " + i + ":");
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
System.out.print(cube[i][j][k] + " ");
}
System.out.println();
}
}
Java解説
インデックスは [層][行][列]。三重for文で全要素を表示。
問題2:初期化と表示
次の三次元配列を一度に初期化して表示してください。
層0: { {1,2}, {3,4} }
層1: { {5,6}, {7,8} }
解答例
int[][][] cube = {
{ {1, 2}, {3, 4} },
{ {5, 6}, {7, 8} }
};
for (int i = 0; i < cube.length; i++) {
System.out.println("層 " + i + ":");
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
System.out.print(cube[i][j][k] + " ");
}
System.out.println();
}
}
Java問題3:配列のサイズを表示
上の配列の「層数」「行数」「列数」を表示してください。
解答例
System.out.println("層数: " + cube.length);
System.out.println("行数: " + cube[0].length);
System.out.println("列数: " + cube[0][0].length);
Java🔹応用編(4〜7)
問題4:合計値を求める
次の配列の全要素の合計を求めてください。
層0: { {1,2}, {3,4} }
層1: { {5,6}, {7,8} }
解答例
int sum = 0;
for (int i = 0; i < cube.length; i++) {
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
sum += cube[i][j][k];
}
}
}
System.out.println("合計: " + sum);
Java問題5:層ごとの合計
各層の合計を表示してください。
解答例
for (int i = 0; i < cube.length; i++) {
int layerSum = 0;
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
layerSum += cube[i][j][k];
}
}
System.out.println("層 " + i + " の合計: " + layerSum);
}
Java問題6:最大値を求める
三次元配列の中で最大値を求めて表示してください。
解答例
int max = cube[0][0][0];
for (int i = 0; i < cube.length; i++) {
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
if (cube[i][j][k] > max) {
max = cube[i][j][k];
}
}
}
}
System.out.println("最大値: " + max);
Java問題7:特定の値の検索
値が「6」の位置(層・行・列)を探して表示してください。
解答例
for (int i = 0; i < cube.length; i++) {
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
if (cube[i][j][k] == 6) {
System.out.println("層: " + i + ", 行: " + j + ", 列: " + k);
}
}
}
}
Java🔹発展編(8〜10)
問題8:層ごとの平均値
各層の平均値を小数で表示してください。
解答例
for (int i = 0; i < cube.length; i++) {
int sum = 0;
int count = 0;
for (int j = 0; j < cube[i].length; j++) {
for (int k = 0; k < cube[i][j].length; k++) {
sum += cube[i][j][k];
count++;
}
}
double avg = (double) sum / count;
System.out.println("層 " + i + " の平均: " + avg);
}
Java問題9:三次元配列を逆順に表示
層・行・列すべてを逆順に表示してください。
解答例
for (int i = cube.length - 1; i >= 0; i--) {
for (int j = cube[i].length - 1; j >= 0; j--) {
for (int k = cube[i][j].length - 1; k >= 0; k--) {
System.out.print(cube[i][j][k] + " ");
}
System.out.println();
}
System.out.println("---");
}
Java問題10:三次元配列の拡張for文
拡張for文を使って全要素を表示してください。
解答例
for (int[][] layer : cube) {
for (int[] row : layer) {
for (int value : row) {
System.out.print(value + " ");
}
System.out.println();
}
System.out.println("---");
}
Java✅まとめ
- 基礎編: 作成・初期化・サイズ
- 応用編: 合計・層ごとの処理・最大値・検索
- 発展編: 平均・逆順・拡張for文
三次元配列は「層 × 行 × 列」の構造を理解すれば、二次元配列の延長として扱えます。

