2016-09-29 128 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