概要
今まで2次元以下の配列を取り扱う時には、何となく、表、あるいは行列のようなイメージで頭を整理していました。が、3次元になった途端に頭が完全にバグるという事態に発展。
そこで、【初心者からわかる】Javaの多次元配列の使い方と、多次元配列を拡張for文で展開を参考にさせてもらって、頭を整理し直しました。以下は整理に使用したプログラムになります。
Intdealing.java
public class Intdealing{
public static void main(String[] args){
int[][] nums = new int[3][4];
System.out.printf("0階層の部屋数:%d\n",nums.length);
System.out.printf("1階層の部屋数:%d×%d\n",nums.length,nums[0].length);
int[][][] nums2 = new int[8][18][2];
System.out.printf("0階層の部屋数:%d\n",nums2.length);
System.out.printf("1階層の部屋数%d×%d\n",nums2.length,nums2[0].length);
System.out.printf("2階層の部屋数%d×%d×%d\n",nums2.length,nums2[0].length,nums2[0][0].length);
//要素番号を使用して値を代入
for(int i=0; i<nums2.length; i++){
for(int j=0; j<nums2[i].length; j++){
nums2[i][j][0] = 2*i;
nums2[i][j][1] = 2*j;
}
}
//拡張for文を使用して値を表示
for(int[][] dimension1 : nums2){
for(int[] dimension2 : dimension1){
for(int dimension3 : dimension2){
System.out.println(dimension3);
}
}
}
}
}
余談
4時間ほどかけてあちこちのサイトを回って、なんとかプログラムを完成させました。今、私の頭の中では、多次元配列はアリの巣のように、あるいはマンションのように縦につながって積み重なる部屋の連なりとして捉えられています。
プログラムを勉強していく中で、今回のように躓くパターンが一番多いように感じられます。そもそもイメージとして捉えるのが間違っているのか、あるいは捉えるイメージが間違っているのかのはよくわかりませんが...