Eclipse建议使用Null Pointerexception,但我相信我初始化了我的对象
正如标题所说,我有NPE错误。 它发生在线:
while (getWidth() > bowl.getX()+10) {
如果我删除它,它会显示它发生在下一行:
bowl.move(10.0, 0);
我得出结论,日食没有看到我的“碗”初始化。 为什么? 不是“新GOval”处理的吗? 我在其中一个post中看到一个解决方案是将声明和初始化分成不同的行,但我认为它不太可能是主要的解决方案(此外,它对我的情况没有帮助)对此有任何建议码?
此代码应创建一个圆圈,将其放在屏幕的左上角,并在单击鼠标按钮后移动圆圈。 圆圈已成功绘制,但点击后会显示NPE消息。
import acm.program.*; import acm.graphics.*; import java.awt.event.*; public class animation extends GraphicsProgram { public void init() { GOval bowl = new GOval(10,10); add(bowl); addMouseListeners(); } public void mouseClicked(MouseEvent e) { while (getWidth() > bowl.getX()+10) { bowl.move(10.0, 0); pause(50); } } private GOval bowl; }
这条线:
GOval bowl = new GOval(10,10);
正在声明一个新的GOval并隐藏在底部定义的全局GOval。
该行应该只是:
bowl = new GOval(10,10);
你是在init
方法的类级别遮蔽你的bowl
场,
private GOval bowl; public void init() { // GOval bowl = new GOval(10,10); bowl = new GOval(10,10); add(bowl); addMouseListeners(); }
像大多数人已经提到的那样,你正在影响你的碗变量。
GOval bowl = new GOval(10,10);
应该换成
bowl = new GOval(10,10);
你可以配置eclipse,当你这样做时他会给你一个警告。 在首选项中,您在java – > compiler – > errors / warnings下有一个专门的部分