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

Java Java
スポンサーリンク

三次元配列は「立方体」や「箱の中に箱がある」イメージで、配列の中に配列があり、それがさらに配列を持つ構造です。
ここでは初心者が段階的に理解できるように、基礎 → 応用 → 発展 の順で練習問題を用意しました。すべてに 解答例と解説 をつけています。


基礎編(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文

三次元配列は「層 × 行 × 列」の構造を理解すれば、二次元配列の延長として扱えます。

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