带有对象的Java链表 - 空指针异常

时间:2017-04-20 19:42:12

标签: java object io nullpointerexception linked-list

此处的完整代码:https://pastebin.com/ntSZ3wZZ 好的,所以在我试图创建的链表项目中,我的构造函数必定会出现严重错误。

这是我的程序应该做的:

// running
add 3.0 3.0 Three
add 2.0 2.0 Two
add 1.0 1.0 One
print
One{0} +1.0, +1.0
Two{0} +2.0, +2.0
Three{0} +3.0, +3.0

以下是发生的事情:

add 3.0 3.0 Three
Exception in thread "main" java.lang.NullPointerException
        at Pet.setLat(Pet.java:37)
        at Pet.newPet(Pet.java:24)
        at Pet.<init>(Pet.java:18)
        at PetList.insertFront(PetList.java:23)
        at Exe.main(Exe.java:14)

我觉得我正在使用空引用(如果这就是你如何调用它)。但我无法弄清楚在哪里或如何!我知道这是一个模糊的问题,但我不知道怎么回答它。如果我可以对我的问题进行一些编辑以使其更容易,请告诉我。谢谢你的帮助!

以下是我的一些代码:

public Pet() {
    name = "";
    treats = 0;
    coor = new Coordinate();
}

public Pet(Pet copy) {
    if(copy == null) {
        name = "";
        treats = 0;
        coor = new Coordinate();
        return;
    }
    newPet(copy);
}

public void newPet(Pet copyTwo) {
    setName(copyTwo.name);
    setTreats(copyTwo.treats);
    setLat(copyTwo.getLat()); // error here line 24
    setLong(copyTwo.getLong());
}
public void setLat(float newLat) {
    coor.setLatitude(newLat);
}

1 个答案:

答案 0 :(得分:3)

您的问题是,在致电coor之前,您的复制构造函数并未初始化setLat()。将您的public Pet(Pet copy)更改为:

public Pet(Pet copy) {
    this();
    if(copy != null) {
        newPet(copy);
    }
}