我是Java的初学者,遇到一个错误,我认为这很奇怪。这是运行程序时的错误:
java.lang.ExceptionInInitializerError
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at test.mob.<init>(mob.java:14)
at test.test.<clinit>(test.java:21)
Exception in thread "main" Java Result: 1
我在NetBeans中编程,该错误未在IDE中显示,仅在运行该程序时显示。这是来自mob类的代码,以查看是否可以找到问题。
package test;
public class mob {
int counter = 0;
int[][] mob;
int loopCount = 0;
int loopCount2 = 0;
public mob(){
//0: x pos
//1: y pos
mob = new int[counter][1];
mob[counter][0]=test.width;
mob[counter][1]=test.height/2;
counter++;
}
public void mobLoop(){
while(loopCount <=counter){
while(loopCount2<2){
mob[loopCount][0]--;
loopCount2++;
}
loopCount2 = 0;
loopCount++;
}
return;
}
}
最佳答案
在Java中,数组从零开始索引。您正在创建一个大小为[0] [1]的数组,该数组的第一个维度为零,第二个维度为零。因此,当您尝试在此行上访问阵列时:
mob[counter][1]=test.height/2;
您在这两个维度上都超出了范围。您将需要在两个维度上加1以根据我看到的代码保留范围。