Java Null Pointer Exception - PullRequest
       7

Java Null Pointer Exception

1 голос
/ 16 февраля 2010

Я попытался адаптировать класс, который я нашел в Интернете, для динамического массива целых чисел для динамического массива «Entities», но теперь я получаю «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 ]

3 голосов
/ 16 февраля 2010
...

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

В противном случае данные равны нулю при первом обращении к нему в методе.

2 голосов
/ 16 февраля 2010

вы делаете

position >= data.length

до инициализации data

0 голосов
/ 16 февраля 2010

Вы делаете это просто как учебное упражнение?Если нет, то почему бы не использовать <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html" rel="nofollow noreferrer">java.util.Vector</a>, который предоставляет динамический массив для любого Object?

0 голосов
/ 16 февраля 2010

(Является ли Entities полем? В этом случае вы должны называть его сущностями. См. http://java.sun.com/docs/codeconv/)

Вы должны точно сказать, на какой линии выбрасывается NPE. Если это во второй строке метода initialize (), то, вероятно, поле Entities пустое. Если это метод put (), то, вероятно, это потому, что поле данных имеет значение null.

...