Java Eclipse建议出现空指针异常,尽管我相信我初始化了我的对象

Java Eclipse建议出现空指针异常,尽管我相信我初始化了我的对象,java,eclipse,nullpointerexception,Java,Eclipse,Nullpointerexception,正如标题所说,我有NPE错误。它发生在网上: while (getWidth() > bowl.getX()+10) { 如果我删除它,它将显示它发生在下一行: bowl.move(10.0, 0); 我的结论是eclipse没有看到我的“碗”被初始化。 为什么?“新政府”不处理这个问题吗? 我在这里的一个线程中看到一个解决方案是将声明和初始化拆分为不同的行,但我认为它不太可能是一个主要解决方案(此外,在我的情况下,它没有帮助)关于此代码的任何建议 这段代码应该创建一个圆,将其放在屏幕

正如标题所说,我有NPE错误。它发生在网上:

while (getWidth() > bowl.getX()+10) {
如果我删除它,它将显示它发生在下一行:

bowl.move(10.0, 0);
我的结论是eclipse没有看到我的“碗”被初始化。 为什么?“新政府”不处理这个问题吗? 我在这里的一个线程中看到一个解决方案是将声明和初始化拆分为不同的行,但我认为它不太可能是一个主要解决方案(此外,在我的情况下,它没有帮助)关于此代码的任何建议

这段代码应该创建一个圆,将其放在屏幕的左上角,并在单击鼠标按钮后移动该圆。圆绘制成功,但单击后会显示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);
正在声明新政府并隐藏底部定义的全局政府

这条线应该是:

bowl = new GOval(10,10);
该行:

GOval bowl = new GOval(10,10);
正在声明新政府并隐藏底部定义的全局政府

这条线应该是:

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();
}

您正在
init
方法中的类级别上隐藏
bowl
字段

private GOval bowl; 

public void init() {
  // GOval bowl = new GOval(10,10);
  bowl = new GOval(10,10);
  add(bowl);
  addMouseListeners();
}

就像大多数人已经提到的那样,您正在跟踪您的bowl变量

GOval bowl = new GOval(10,10);
应替换为

bowl = new GOval(10,10);

您可以配置eclipse,使其在执行此操作时向您发出警告。在首选项中,您在java->compiler->errors/warnings

下有一个专门的部分,就像大多数人已经提到的那样,您正在隐藏您的bowl变量

GOval bowl = new GOval(10,10);
应替换为

bowl = new GOval(10,10);

您可以配置eclipse,使其在执行此操作时向您发出警告。在首选项中,您在java->compiler->errors/warnings

@Andrew Stubbs Wow下有一个专用部分。我为此奋斗了这么久!谢谢这有帮助@听着,我从没说过eclipse是错的。那太傲慢了。我只是说我相信我初始化了这个对象。不说eclipse是错误的与相信它是正确的有点不同。找到一个bug,就像找到其他你看不见的东西一样,如果你确信它在哪里,那么会变得更容易。其他语言和系统往往使我们中的许多人不信任错误消息,我只是指出,Java消息几乎总是指向正确的方向。@Andrew Stubbs哇。我为此奋斗了这么久!谢谢这有帮助@听着,我从没说过eclipse是错的。那太傲慢了。我只是说我相信我初始化了这个对象。不说eclipse是错误的与相信它是正确的有点不同。找到一个bug,就像找到其他你看不见的东西一样,如果你确信它在哪里,那么会变得更容易。其他语言和系统倾向于让我们中的许多人不信任错误消息,我只是指出Java消息几乎总是指向正确的方向。是的=)再次强调,它从来没有冒犯eclipse的意思。可能标题应该是。我仍然相信我初始化了对象,即使Eclipse说我有一个错误;)是=)再说一次,我从来没有冒犯eclipse的意思。也许标题应该是。我仍然相信我初始化了对象,即使Eclipse说我有一个错误;)