0

さて、私のプログラムは、ユーザーが入力した座標(X、Y、幅、長さ)に基づいて自動的に長方形を描画することになっています。プログラムを実行すると、スレッドのメインエラーで例外が発生します。

正確なエラーは次のとおりです。

Exception in thread "main" java.lang.NullPointerException
at rectangle.draw(rectangle.java:31)
at rectangle.main(rectangle.java:52)

私が間違っていることを教えてください!

ありがとう!

コード:`importgpdraw。*; java.util.Scannerをインポートします。

パブリッククラスの長方形{

private static double myX;
private static double myY;
private static double myWidth;
private static double myHeight;
private DrawingTool myPencil;
private SketchPad myPaper;

public double getPerimeter(){

    double perimeter;
    perimeter = myWidth * 2 + myHeight * 2;


    return perimeter;   
}
public double Area(){
    double area;

    area = myHeight * myWidth;
    System.out.println("Area: " + area);

    return area;

}
public void draw(){
    myPencil.up();
    myPencil.move(myX , myY);
    myPencil.down();
    myPencil.move(myX + myWidth, myY);
    myPencil.move(myX + myWidth, myY + myHeight);
    myPencil.move(myX , myY);
}


public static void main(String[] args){

    Scanner input = new Scanner(System.in);
    System.out.println("Enter X Value: ");
    myX = input.nextInt();
    System.out.println("Enter Y Value: ");
    myY = input.nextInt();
    System.out.println("Enter Width: ");
    myWidth = input.nextInt();
    System.out.println("Enter Height: ");
    myHeight = input.nextInt();
    rectangle picture = new rectangle();
    picture.draw();
}

} `

51行目:picture.draw(); 31行目:myPencil.up();

4

2 に答える 2

2

myPencilフィールドに値を割り当てることは決してないため、デフォルト値は。になりますnull。次に、ここで間接参照しようとすると、次のようになります。

myPencil.up();

...それは例外をスローします。

おそらくあなたは価値を与えるつもりでしmyPencilた、例えば

private DrawingTool myPencil = new Pencil();

...またはおそらくコンストラクターでそうしますか?

于 2012-10-09T19:34:37.980 に答える
0

インスタンス化する必要がありますmyPencil

myPencil = new DrawingTool();
于 2012-10-09T19:35:37.240 に答える