2016-09-29 15 views
0

与えられた3D配列を追加し、それをDとして印刷しようとしています。さらに、配列[0]と[1]を与えられた3d配列から取り出し、 2D配列でそれらを追加します。例えば3D配列を2Dに変換する

3Dアレイは、以下の2D行列

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

を有する場合に、2次元配列は、これは私のコードである

 {2,3,4}, 
>  
>   {5,6,7} 

を印刷しなければなりません。しかし、それは次のエラーを与える:

for (int j=0; j<b[j].length;j++) 

しかし、いただきました、それと間違って私にはわからない:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 
    at ThreeDRay.add(ThreeDRay.java:53) 
    at ThreeDRayRunner.main(ThreeDRayRunner.java:53) 

ライン53がある

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

私はそれを変更された:(i = 0、int型、iがてb.lengthを<; I ++の)ため\t \t(INT J = 0 \t \t { \t \t \t \t \t \t; J ZeldaX

関連する問題