在另一个类中创建一个类的对象?

时间:2018-06-05 10:34:41

标签: java constructor

我有两个课程,我想知道为什么当我尝试创建一个类的对象时,我总是会出现错误" Knoten"在一个方法" 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;
    }


}

每当我调用方法punktHinzufuegen时,我都会收到错误消息。谢谢你的帮助......

2 个答案:

答案 0 :(得分:1)

你的问题是一个很容易解决的问题,所以我会给出一个简短的解释/解决方案。

您当前的问题是,您没有定义 knotenliste 。 您应该将其定义为以下字段:

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

我建议您不要使用静态值,而是开始使用固定的 ArrayList (为了索引图形点)或队列即可。如果您有兴趣阅读它们,可以在Java文档中找到这两个。 我要做的是以下几点:

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

通过这种方式,您不仅可以停止滥用static关键字,还可以使用更灵活的Collection来保存您的Knoten。

答案 1 :(得分:0)

您尚未初始化数组,我认为您在添加元素时获得了NullPointerException。您需要在向其添加元素之前对其进行初始化

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