2

この小さなコードが ArrayIndexOutOfBoundsException をスローしている理由は非常に奇妙です

class sum
{
 public static void main(String[] arg)
 {
       int arr[][]=new int[2][3];
       arr[0][0]=4;
       arr[0][1]=2;
       arr[0][2]=5;
       arr[1][0]=5;
       arr[1][1]=2;
       arr[1][2]=6;
       for (int i=0; i < 2; i++)
       {
              for (int j=0; j < 3; j++)
              {
              System.out.print(arr[j][i]);
              }
             System.out.println();
       }
    }
}

このように順番を変えると

System.out.print(arr[j][i]);

期待どおりの出力が得られました。

列の合計を印刷するにはどうすればよいですか?

4

3 に答える 3

3

あなたが与えたコードは ArrayIndexOutOfBoundsException を与えます。内側のループの 3 回目の反復では、arr[2][i] (存在しない) を呼び出しているためです。別の種類の出力が必要な場合は、試してみてください

 for (int j=0; j < 2; j++)
           {
                  for (int i=0; i < 3; i++)
                  {
                  System.out.print(arr[j][i]);
                  }
                  System.out.println();
           } 

列を追加するには、ローカル変数 sumc を作成してから、このループを使用します

for(int i=0; i < 3; i++)
{
   for(int j=0;j<2;j++)
   {
       sumc += arr[i][j];
   }
   System.out.println(sumc);
   sumc = 0;
}
于 2013-06-05T17:44:05.093 に答える
2

この小さなコードが ArrayIndexOutOfBoundsException をスローしている理由は非常に奇妙です

kindnessコードは小さいですが、例外は表示されません。

配列の最初の次元のサイズは最大 2 要素であるため、インデックスと0存在します。1j2j2ArrayIndexOutOfBoundsException

arr[j][i]の代わりに誤って入力した可能性がありarr[i][j]ます。

編集:列の合計を取得するため

java.util.Scanner をインポートします。

/**
 * @author Nathan2055
 */

    public class Tester {


     public static void main(String[] arg)
     {
           int arr[][]=new int[2][3];
           int sums[]=new int[3];
           arr[0][0]=4;
           arr[0][1]=2;
           arr[0][2]=5;
           arr[1][0]=5;
           arr[1][1]=2;
           arr[1][2]=6;
           for (int i=0; i < 2; i++)
           {
              int sum=0;
                  for (int j=0;j < 3; j++)
                  {
                  System.out.print(arr[i][j]+" ");
                  sum+=arr[i][j];
                  }
                 System.out.println();
                 sums[i]=sum;
           }
           for(int i=0;i<3;i++){
                System.out.print(sums[i]+" ");
           }
        }}
于 2013-06-05T17:28:43.357 に答える