3次元配列とその先
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 7/59。
2D配列(配列の配列)を作成できるのと同様に、3D配列(配列の配列の配列)、4D配列なども作成できます。これらは多次元配列と呼ばれます。
3D配列は、複数の2D配列を上下に積み重ねて、立方体のような構造を形成したものとして視覚化できます。3D配列の各要素には、3つのインデックスを使用してアクセスします。1つはdepth(どの2D配列か)、1つは行、もう1つは列を指定します。
Javaで3D配列を宣言して初期化する方法は次のとおりです:
data_type[][][] array_name = new data_type[depth][rows][columns];data_type: array が保持する要素の型。array_name: array の名前。
depth: 2D配列の数(深さ)。rows: 各2D配列の行数。columns: 各2D配列の列数。
たとえば、2x3x4の次元を持つ整数の3D配列を作成するには、次のように記述します。
int[][][] cube = new int[2][3][4];3D配列を直接初期化することもできます:
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つの整数引数、depth、rows、colsを受け取るプログラムを作成してください。指定された次元を持つ整数の3D arrayを作成し、arrayの各要素を、そのdepth、row、columnのインデックス(1から開始)の積で初期化します。
たとえば、[d][r][c]にある要素は、値(d + 1) * (r + 1) * (c + 1)を持つ必要があります。
最後に、ネストされたループを使用して、結果の3D arrayをコンソールに出力してください。出力は次のようになります:
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自分で試してみよう
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();
}
}
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ