方法上的空指针异常

时间:2014-04-11 18:15:26

标签: java

这是我的第一个每个java项目。一切顺利,我的程序编译完毕。 我的屏幕上有一个3D外观对象。 但是当我使用moveTo(int x,int y)方法时,我得到一个空指针异常。 我查了一下这对许多人来说显然是个大问题。 但我仍然无法理解它的概念以及任何适用于其他人的修复方法 似乎不适合我的计划。 我已经尝试使用if语句来检查null和类似的东西,但我不能正确或类似的语法。 例如,base是一个椭圆,ellipse类有一个moveTo(x,y)方法。但是当我使用base.moveTo(x,y)调用它时,我得到了错误。 有人可以帮忙吗? cylinder1.moveTo(8,8);     发生了异常。 显示java.lang.NullPointerException     在Cylinder3D.moveTo(Cylinder3D.java:57) 这是堆栈跟踪的内容吗? 这是矩形类中moveTo方法的代码。 public void moveTo(int x,int y)     {         xPosition = x;         yPosition = y;         makeVisible();         画();     }

public class Cylinder3D
{   

    private int diameter;
    private int height;
    private Ellipse top;
    private Ellipse base;
    private Rectangle wall;
    int xPosition;
    int yPosition;


    public Cylinder3D(int diameter, int height)
    {
        int x = 0;
        int y = 0;
        Ellipse top = new Ellipse();
        int xdiameter=diameter;
        int ydiameter=diameter/2;
        int xPosition = 0;
        int yPosition = 0;
        top.setState(xdiameter,ydiameter,xPosition,yPosition,"black");

        Ellipse base = new Ellipse();
        int yPositionBase = yPosition + height;
        base.setState(xdiameter,ydiameter,xPosition,yPositionBase,"black");


        Rectangle wall = new Rectangle();
        int xSideLenght = diameter;
        int ySideLenght = height;
        int yPositionWall = yPosition + (diameter/4);
        wall.setState(xSideLenght,ySideLenght,xPosition,yPositionWall,"black");
        //....

    }



    public void moveTo(int x, int y)
    {
        wall.moveTo(x,y); //here is where I get the error.
        base.moveTo(x,y);
        top.moveTo(x,y);
    }
}

1 个答案:

答案 0 :(得分:3)

您的构造函数不会触及任何成员变量topbasewall,因为在构造函数中声明的局部变量会影响您可能想要初始化的成员变量。

因此,他们保持null,并尝试在moveTo投掷中调用成员函数。