Marko Reus
Marko Reus

Reputation: 13

Creating an object of one class in another class?

I have two classses and I wonder why I always get an error when I try to create an object of class "Knoten" in a method of class "Graph".

Class Graph

public class Graph
{

    static Knoten[] knotenliste;


        public void punktHinzufuegen(int x, int y){
            for(int i=0;i<Gui.zaehler;i++){
                knotenliste[i]=new Knoten(x,y);

            }
        }
    } 

Class Knoten:

public class Knoten{

int xPos;
int yPos;

    public Knoten(int x,int y){
       xPos=x;
       yPos=y;
    }


}

Every time I call method punktHinzufuegen I get an error. Thanks for helping..

Upvotes: 0

Views: 78

Answers (2)

user9896706
user9896706

Reputation:

Your problem is a very easy problem to solve, so I'll give a short explanation/solution.

What your current problem is, is that you are not defining your knotenliste. You should define it as the following field:

private static Knoten[] knotenliste = new Knoten[Gui.zaehler];

I would suggest that you do not use a static value but start working with either a fixed ArrayList (in order to index your graph points) or a Queue. Both of those can be found on the Java documentation if you're intested in reading about them. What I would have done is the following:

public class Graph {

    private final ArrayList<Knoten> knotenliste = new ArrayList<>(Gui.zaehler);

    public void punktHinzufuegen(int x, int y) {
        for (int i = 0; i < Gui.zaehler; i++) {
            // Keep in mind that the List#add(int index, E element) will 
            // shift all the elements previously in the array to the right.
            knotenliste.add(i, new Knoten(x, y));
        }
    }
}

With this you do not only stop abusing the static keyword, but you also have a more flexible Collection to save your Knoten in.

Upvotes: 1

Yati Sawhney
Yati Sawhney

Reputation: 1402

You haven't initialized your array and I think you are getting NullPointerException while adding elements. You need to initialize it before adding elements to it

static Knoten[] knotenliste = new Knoten[<SOME_INT_VALUE>];

Upvotes: 0

Related Questions