简单的2D数组抛出异常

时间:2013-06-05 17:14:51

标签: java multidimensional-array

非常奇怪,为什么这个小代码抛出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]);

我得到了我期望的输出。

如何打印列的总和?

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

  

这个小代码抛出的原因很奇怪   ArrayIndexOutOfBoundsException异常

虽然代码很小,但例外情况不会显示任何kindness

您的数组的第一个维度的大小最多为2个元素,因此存在索引01。您的j值最多为2,您在第一维上应用j当j转到2时,因为它是一个不存在的索引,您将获得ArrayIndexOutOfBoundsException

您可能不小心输入了arr[j][i]而不是arr[i][j]

编辑:获取列的总和

import 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]+" ");
           }
        }}

答案 2 :(得分: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();
 };
}