我有两个课程,我想知道为什么当我尝试创建一个类的对象时,我总是会出现错误" 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时,我都会收到错误消息。谢谢你的帮助......
答案 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>];