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 。由于在内部循环的第三次迭代中,您正在调用 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。您的值是 upto ,您在第一个维度上应用 j ,因为它是一个不存在的索引,所以您得到。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 回答
0

您正在尝试访问不可用的数组索引。我稍微编辑了您的代码并打印了:-

public static void main(String[] args) {
 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++)
   {
          System.out.println(">>> i = " + i);

          for (int j=0; j < 3; j++)
          {
              System.out.println(">>> j = " + j + "\n");

              System.out.print(arr[j][i] + "\n");
          }
         System.out.println();
   };
}

这是您的代码输出:-

>>> i = 0  
>>> j = 0  
4       // [0][0]  
>>> j = 1  
5       // [1][0]  
>>> j = 2  // now here you are trying to access [2][0] which is not available and it    shows the ArrayIndexOutOfBoundsException error.

添加列的代码:-

public static void main(String[] args) {
  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++)
  {
      int sum= 0;
      System.out.println(">>> i = " + i);

      for (int j=0; j < 3; j++)
      {
          System.out.println(">>> j = " + j + "\n");

          System.out.print(arr[i][j] + "\n");

          if(i < 1){ 
            sum += arr[i][j] + arr[i+1][j]; //sum of column
            System.out.print("sum >> " + sum + "\n");
          }
      }
     System.out.println();
 };
}
于 2013-06-05T17:38:24.080 回答