This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12个答案)
在11个月前关闭。
当我在构造函数
我猜这与公共和私人声明有关吗?
主要看起来像这样:
在您的Turtle构造函数中设置实例变量。然后设置了w,而w.getX()将不会抛出NPE。
(12个答案)
在11个月前关闭。
当我在构造函数
NullPointerException
中调用w.getX()
时,为什么没有得到Turtle(...)
,但是当我在方法getX()
中调用它时,却会得到。我猜这与公共和私人声明有关吗?
public class Turtle {
int x, y;
private boolean pen;
private double rikt;
private SimpleWindow w;
public Turtle(SimpleWindow w, int x, int y) {
w.moveTo(x, y);
System.out.println(w.getX());
rikt = Math.PI / 2;
pen = false;
}
public int getX() {
return w.getX();
}
public int getY() {
return w.getY();
}
}
主要看起来像这样:
public class TurtleDrawSquare {
public static void main(String[] args) {
SimpleWindow w = new SimpleWindow(600, 600, "TurtleDrawSquare");
Turtle t = new Turtle(w, 300, 300);
t.penDown();
for (int i = 0; i < 4; i++) {
t.forward(100);
t.left(90);
}
}
}
最佳答案
您的描述并不清楚。但是在您的Turtle构造函数中,您将w作为参数。因此,当参数不为null时,则没有NPE。
但是永远不会设置实例变量w。因此,当您调用getX时,您会得到一个NPE,因为从未设置w。
所以也许您只需添加一个
this.w = w;
在您的Turtle构造函数中设置实例变量。然后设置了w,而w.getX()将不会抛出NPE。
关于java - 为什么会出现空指针异常? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56193121/
10-12 02:11