我正在尝试添加一个给定的3D数组并将其打印为D.此外,我必须从给定的3d数组中取出数组[0]和[1]并在2D数组中添加它们的相应位置并添加它们
例如,如果3D阵列具有以下2D矩阵
> Array[0] : {1,2,3},
>
> {4,5,6}
>
>
> Array[1] : {1,1,1},
>
> {1,1,1}
2D阵列应打印
{2,3,4},
>
> {5,6,7}
这是我的代码。但是,它会出现以下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at ThreeDRay.add(ThreeDRay.java:53)
at ThreeDRayRunner.main(ThreeDRayRunner.java:53)
行53
是:
for (int j=0; j<b[j].length;j++)
但我不知道它有什么问题:
public static void add(int[][][]array){
int [][] b = new int[array[0].length][array[0][0].length];
for (int x=0; x<array.length;x++){
for (int y=0; y<array[0].length;y++){
for (int z=0; z<array[0][0].length;z++){
b[y][z] += array[x][y][z];
}
}
}
System.out.println ("Adding matrix at 0 and matrix at 1 ");
for (int i=0; i<b.length;i++){
for (int j=0; j<b[j].length;j++){
System.out.print(b[i][j]);
}
System.out.println();
}
}
}
答案 0 :(得分:1)
for (int j=0; j<b[j].length;j++)
{
System.out.print(b[i][j]);
}
这里你的b[j]
长度可能超出范围,因为你以后会使用不同的数组(b[i]
)。只需在b[i].length
循环中执行for
即可修复它。请记住,for
循环在每次迭代之前检查条件,而不仅仅是在创建时。