当我尝试输出数组时为什么会出现异常错误

时间:2020-10-04 19:54:34

标签: java arrays exception multidimensional-array error-handling

我写了一个简单的代码,应该可以输出2D数组。 这是代码

     String month [];
    int speedfines[][];
    public int speedFines(){
    
      speedfines = new int [3][2]; 
   month = new String [2];
   
   month [0] = "JAN";
   month [1] = "FEB";
   month [2] = " MAR";
   
   
    speedfines [0][0] = 128;
    speedfines [0][1] = 135;
    speedfines [0][2] = 139;
    speedfines [1][0] = 155;
    speedfines [1][1] = 129;
    speedfines [1][2] = 175;
    speedfines [2][0] = 129;
    speedfines [2][1] = 130;
    speedfines [2][2] = 185;
    speedfines [3][0] = 195;
    speedfines [3][1] = 155;        
    speedfines [3][2] = 221;
    
    
    
        System.out.println(Arrays.toString(speedfines));
    
    
    
    
    
        return 0;

当我运行这段代码时,它在线程错误中给了我Java异常。 我正在使用netbeans 12.0,我的代码没有任何错误,但是运行时出现异常错误错误 有人可以向我解释一下Java异常的含义以及在可能的情况下如何解决它。

3 个答案:

答案 0 :(得分:2)

问题是您为数组monthspeedfines定义的大小。

例如,您将大小 2 定义为 month ,并尝试将 3 个元素放入其中。为了使代码正常工作,请将数组定义更改为:

speedfines = new int [4][3];
month = new String [3];
 -------------------
|      |      |     |     ⇒    Size = 3  /  month = new String [3]
 -------------------
   ↑       ↑     ↑
   0       1     2

答案 1 :(得分:0)

您的month数组应为:

month = new String [3];

将其设置为new String[2]时,您允许数组中包含2个项目。

由于您在数组中设置了3个项目:

   month [0] = "JAN";
   month [1] = "FEB";
   month [2] = " MAR";

它引发ArrayIndexOutOfBoundsException,因为此时索引2不存在。

此外,函数外部定义了数组。将它们移到函数内部。

代码应为:

    public int speedFines(){
      int speedfines[][]; = new int [3][2]; 
   String month []= new String [3];
   

   month [0] = "JAN";
   month [1] = "FEB";
   month [2] = " MAR";



speedfines [0][0] = 128;
speedfines [0][1] = 135;
speedfines [0][2] = 139;
speedfines [1][0] = 155;
speedfines [1][1] = 129;
speedfines [1][2] = 175;
speedfines [2][0] = 129;
speedfines [2][1] = 130;
speedfines [2][2] = 185;
speedfines [3][0] = 195;
speedfines [3][1] = 155;        
speedfines [3][2] = 221;



    System.out.println(Arrays.toString(speedfines));





    return 0;

答案 2 :(得分:0)

您在数组2dimention中保存了12个项目,因此您需要执行此操作speedfines = new int [4][3]; 我认为异常名称是ArrayIndexOutOfBounds,它会在您放置数组大小并为其提供大于其大小的项目时显示