次のコードがあります。
public int[][][] arrMethod1(){
for (int idx=0;idx< x;idx++ ){
arr[idx]=arrMethod2();
System.out.println("arr "+idx+" is "+Arrays.toString(arr[idx][0]));
}
System.out.println("arr0 are "+Arrays.toString(arr[0][0]));
System.out.println("arr1 are "+Arrays.toString(arr[1][0]));
return arr;
}
このコードを実行すると、for ループ内と外側で異なる結果が生成されます。は for ループ内では当てはまらないarr[0][0]
と同じようです。arr[1][0]
myMethod() はarr[idx]
、2D 配列で初期化するメソッドです。私のテストではx=2
、簡単にするために 1D 配列を使用しました。目的は、3D 配列をx
異なるものにすることです。arr
コードの残りの部分:
private final int[][] arrMethod2(){
final int[] otherArr=arrMethod3();
for (int idz=0;idz< z;idz++ ){
int[] toBe=new int[otherArr.length];
System.arraycopy( otherArr, 0, toBe, 0, otherArr.length );
newArr2[idz]=change(toBe);
}
return newArr2;
}
public int[] arrMethod3(){
for (int idy = 0; idy < y; idy++){
double randomInt = randomGenerator.nextDouble();
newArr3[idy]=(int) Math.round(randomInt);
}
return newArr3;
public MyClass(int x,int y, int z){
this.x=x;
this.y=y;
this.z=z;
this.newArr3 = new int[y];
this.newArr2 = new int[z][y];
this.arr = new int[x][z][y];
}