【问题标题】:Print 3D array converted into a 2D打印 3D 数组转换为 2D
【发布时间】:2016-09-29 15:51:53
【问题描述】:

我正在尝试添加给定的 3D 数组并将其打印为 D。此外,我必须从给定的 3D 数组中获取数组 [0] 和 [1] 并将它们的相应位置添加到 2D 数组中并添加它们.

例如,如果一个 3D 数组具有以下 2D 矩阵

> Array[0] : {1,2,3},
>    
>            {4,5,6}
> 
> 
> Array[1] :  {1,1,1},
> 
>             {1,1,1}

二维数组应该打印出来

     {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();
        }
    }
}

【问题讨论】:

    标签: java arrays loops multidimensional-array integer


    【解决方案1】:
    for (int j=0; j<b[j].length;j++)
    {
      System.out.print(b[i][j]);
    }
    

    在这里,您使用的 b[j] 长度可能会超出范围,因为您稍后会使用不同的数组 (b[i])。只需在 for 循环中执行 b[i].length 即可,它应该可以修复它。请记住,for 循环会在每次迭代之前检查条件,而不仅仅是在创建时。

    【讨论】:

    • 我把它改成了: for (int i=0; i
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2019-10-31
    • 2017-07-26
    • 2021-12-29
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多