好吧所以我的程序应该根据用户键入的坐标(X,Y,Width,Length)自动绘制一个矩形。当我运行程序时,我在线程主错误中得到一个异常。
这是确切的错误:
Exception in thread "main" java.lang.NullPointerException
at rectangle.draw(rectangle.java:31)
at rectangle.main(rectangle.java:52)
请告诉我我做错了什么!
谢谢!
代码:`import gpdraw。*; import 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();
答案 0 :(得分:2)
您永远不会为myPencil
字段指定值,因此它的默认值为null
。然后,当您尝试在此处取消引用时:
myPencil.up();
......会引发异常。
大概你意味着给myPencil
一个值,例如
private DrawingTool myPencil = new Pencil();
......或者也许在构造函数中这样做?
答案 1 :(得分:0)
您需要实例化myPencil
:
myPencil = new DrawingTool();