Java空指针异常

时间:2010-02-15 23:50:47

标签: java arrays exception nullpointerexception dynamic-arrays

我试图调整我在网上找到的一个类,用于动态数组的“实体”的动态数组,但现在我得到一个“NullPointerException。”

引发异常的代码是:

public void initialize()
{
    buffer = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
    Entities.put(Entities.getCurrentPos()+1, new Entity(100, 100, Color.green));
    Entities.put(Entities.getCurrentPos()+1, new Entity(400, 400, Color.blue));
}

DynArrayEntities类的相关部分:

...

private Entity[] data;  // An array to hold the data.
private int currentpos = 0;

...

public void put(int position, Entity value) {

    if (position >= data.length) {

        int newSize = 2 * data.length;
            if (position >= newSize)
                newSize = 2 * position;
        Entity[] newData = new Entity[newSize];
        System.arraycopy(data, 0, newData, 0, data.length);
        data = newData;
    }

    data[position] = value;
    currentpos++;

}

....

public int getCurrentPos() {
    return currentpos;
}

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

...

private Entity[] data= new Entity[0];  // Or some value > 0
...

否则在您第一次在方法中访问数据时,数据为空。

答案 1 :(得分:2)

你正在做什么

position >= data.length

在初始化data

之前

答案 2 :(得分:0)

(实体是一个字段吗?在这种情况下,您应该将其称为实体。请参阅http://java.sun.com/docs/codeconv/

你应该准确地说出NPE被扔到哪一行。如果它在initialize()方法的第二行中,那么实体字段可能为空。如果它在put()方法中,则可能是因为数据字段为空。

答案 3 :(得分:0)

你这样做是为了学习吗?如果没有,为什么不使用java.util.Vector,它为任何Object提供动态数组?