打印3D阵列转换为2D

时间:2016-09-29 15:51:53

标签: java arrays loops multidimensional-array integer

我正在尝试添加一个给定的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();
        }
    }
}

1 个答案:

答案 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循环在每次迭代之前检查条件,而不仅仅是在创建时。