此处的完整代码: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);
}
答案 0 :(得分:3)
您的问题是,在致电coor
之前,您的复制构造函数并未初始化setLat()
。将您的public Pet(Pet copy)
更改为:
public Pet(Pet copy) {
this();
if(copy != null) {
newPet(copy);
}
}