1

我是 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;
    }

}
4

1 回答 1

1

数组在 Java 中从零开始索引。您正在创建一个大小为 [0][1] 的数组,它在第一维中包含零元素,在第二维中包含一个元素。因此,当您尝试访问此行上的数组时:

mob[counter][1]=test.height/2;

你在两个维度上都超出了界限。根据我看到的代码,您需要在两个维度上添加 1 以保留边界。

于 2013-09-03T23:55:14.610 回答