Eclipse建议使用Null Pointer异常,但我相信我初始化了我的对象

use*_*993 1 java eclipse nullpointerexception

正如标题所说,我有NPE错误.它发生在线:

while (getWidth() > bowl.getX()+10) {
Run Code Online (Sandbox Code Playgroud)

如果我删除它,它会显示它发生在下一行:

bowl.move(10.0, 0);
Run Code Online (Sandbox Code Playgroud)

我得出结论,日食没有看到我的"碗"初始化.为什么?不是"新GOval"处理的吗?我在其中一个帖子中看到一个解决方案是将声明和初始化分成不同的行,但我认为它不太可能是主要的解决方案(此外,它对我的​​情况没有帮助)对此有任何建议码?

此代码应该创建一个圆圈,将其放在屏幕的左上角,并在单击鼠标按钮后移动圆圈.圆圈已成功绘制,但点击后会显示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; 
}
Run Code Online (Sandbox Code Playgroud)

And*_*bbs 5

这条线:

GOval bowl = new GOval(10,10);
Run Code Online (Sandbox Code Playgroud)

正在声明一个新的GOval并隐藏在底部定义的全局GOval.

该行应该只是:

bowl = new GOval(10,10);
Run Code Online (Sandbox Code Playgroud)