Question

I attempted to adapt a class I had found on the web for a dynamic array of ints for a dynamic array of "Entities," but now I am getting a "NullPointerException."

The code raising the exception is:

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));
}

The relevant parts of DynArrayEntities class:

...

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

Thanks in advance for your help!

Was it helpful?

Solution

...

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

otherwise data is null the first time you access it in the method.

OTHER TIPS

you're doing

position >= data.length

before initializing data

(Is Entities a field? In that case you should call it entities. See http://java.sun.com/docs/codeconv/)

You should tell exactly that on which line the NPE is thrown. If it's in the initialize() method's second line, then probably the Entities field is null. If it's in the put() method, then probably it's because the data field is null.

Are you doing this just as a learning exercise? If not, why not use java.util.Vector, which provides a dynamic array for any Object?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top