我有以下代码:
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循环内部和外部会产生不同的结果。似乎arr[0][0]
与 相同arr[1][0]
,这在 for 循环中是不正确的。arr[idx]
myMethod() 是一种使用 2D 数组进行初始化的方法。对于我的测试,x=2
为了简单起见,我使用了一维数组。目的是拥有x
不同arr
的 3D 数组。其余代码:
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];
}