我写了一个简单的代码,应该可以输出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异常的含义以及在可能的情况下如何解决它。
答案 0 :(得分:2)
问题是您为数组month
和speedfines
定义的大小。
例如,您将大小 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,它会在您放置数组大小并为其提供大于其大小的项目时显示