2016-09-29 99 views
0

我想添加一个给定的3D数组并将其打印为D.此外,我必须从给定的3D数组中取出数组[0]和[1]并添加其相应的位置在二维数组中添加它们。打印3D数组转换成2D

例如,如果一个三维阵列具有如下的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
for (int j=0; j<b[j].length;j++) 
{ 
    System.out.print(b[i][j]); 
} 

给你采取b[j]长度,可能会超出界限,因为你以后采取不同的阵列(b[i])。只需在for循环中执行b[i].length并且它应该修复它。请记住,for循环正在每次迭代之前检查条件,而不仅仅是在创建时。

+0

我改成:\t \t 为(INT I = 0; I ZeldaX