Menu
Coddy logo textTech

3次元配列とその先

CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 7/59。

2次元配列(配列の配列)を作成できるのと同様に、3次元配列(配列の配列の配列)、4次元配列なども作成できます。これらは多次元配列と呼ばれます。

3 次元配列は、互いに積み重ねられた 2 次元配列の集合として視覚化でき、立方体のような構造を形成します。3 次元配列の各要素は、3 つのインデックスを使用してアクセスします:深さ(どの 2 次元配列か)、行、列の 1 つずつです。

Java で 3 次元配列を宣言および初期化する方法は以下の通りです:

data_type[][][] array_name = new data_type[depth][rows][columns];
  • data_type: 配列が保持する要素の型です。
  • array_name: 配列の名前です。
  • depth: 2D配列の数(深さ)。
  • rows: 各2D配列の行数。
  • columns: 各2D配列の列数。

例えば、2x3x4の寸法を持つ整数型の3次元配列を作成するには、次のように記述します:

int[][][] cube = new int[2][3][4];

また、3次元配列を直接初期化することもできます:

int[][][] cube = {
    {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    },
    {
        {13, 14, 15, 16},
        {17, 18, 19, 20},
        {21, 22, 23, 24}
    }
};
challenge icon

チャレンジ

簡単

3つの整数引数を取るプログラムを書いてください:depthrowscols。指定された寸法の整数3次元配列を作成し、配列の各要素をその深さ、行、列のインデックス(1から開始)の積で初期化してください。

例えば、[d][r][c] の要素は (d + 1) * (r + 1) * (c + 1) の値を持つべきです。

最後に、入れ子になったループを使用して結果の3次元配列をコンソールに出力してください。出力は次のようになるはずです:

Depth 0:
1 2 3 4 
2 4 6 8 
3 6 9 12 
Depth 1:
2 4 6 8 
4 8 12 16 
6 12 18 24

チートシート

3次元配列は配列の配列の配列であり、深さ、行、列を持つ立方体のような構造として視覚化されます。

宣言と初期化:

data_type[][][] array_name = new data_type[depth][rows][columns];

例:

int[][][] cube = new int[2][3][4];

直接初期化:

int[][][] cube = {
    {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    },
    {
        {13, 14, 15, 16},
        {17, 18, 19, 20},
        {21, 22, 23, 24}
    }
};

要素は3つのインデックスを使用してアクセスされます:array[depth][row][column]

自分で試してみよう

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int depth = scanner.nextInt();
        int rows = scanner.nextInt();
        int cols = scanner.nextInt();

        int[][][] array3D = new int[depth][rows][cols];
        // 以下にコードを記述してください

        // 3D配列を出力
        for (int d = 0; d < depth; d++) {
            System.out.println("Depth " + d + ":");
            for (int r = 0; r < rows; r++) {
                for (int c = 0; c < cols; c++) {
                    System.out.print(array3D[d][r][c] + " ");
                }
                System.out.println();
            }
        }
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン