這是我第一個java項目。一切順利,我的程序編譯完成。 我在屏幕上看到了一個3D外觀。 但是當我使用我的moveTo(int x,int y)方法時,我得到一個空指針異常。 我已經看過它,這對很多人來說顯然是一個巨大的問題。 但我仍然無法理解它的概念,並且其他人的任何修補程序 似乎都不適合我的程序。 我曾嘗試使用if語句來檢查null和類似的東西,但我無法獲得正確的語法或某些東西。 例如,基礎是一個橢圓,橢圓類有一個moveTo(x,y)方法。但是當我使用base.moveTo(x,y)調用它時,我得到錯誤。 任何人都可以幫忙嗎? cylinder1.moveTo(8,8); 發生異常。 在Cylinder3D.moveTo java.lang.NullPointerException (Cylinder3D.java:57) 這是你通過堆棧跟蹤嗎? 這是矩形類中moveTo方法的代碼。 public void moveTo(int x,int y) {xPosition = x; yPosition = y; makeVisible(); draw(); }方法上的空指針異常
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);
}
}
「我得到一個空指針異常」 - 請發佈堆棧跟蹤 –
在您的**構造函數**中做了什麼'Rectangle wall = new Rectangle();',因爲您已經聲明瞭一個實例變量同名? –
也發佈了wall.moveto()的代碼,它可能試圖使用一些未初始化的變量 – Kakarot