【发布时间】:2014-08-06 01:12:27
【问题描述】:
我的 toString 方法出现空指针异常错误。我不知道为什么。该错误可能通过多种方式发生。最常见的是,声明了对象的引用,但对象本身仍未创建。我已经声明并创建了(初始化正确的词?)Mycircle circle1 = new Mycircle (); 和 Mypoint center = new Mypoint ();
我怀疑我在调用 getter 方法时没有初始化任何字段,但事实并非如此。 setter 方法工作得很好——我已经成功地输入了值。这并不意味着我的 getter 方法可以访问一些非空值。
import java.util.Scanner;
public class MyCircle {
private Mypoint center;
private double radius;
Scanner input = new Scanner (System.in);
public MyCircle() {
radius = 0.0;
Mypoint center = new Mypoint ();
System.out.println("Enter coordinates here");
center.setCoordinateX(input.nextDouble());
center.setCoordinateY(input.nextDouble());
}
public String toString(MyCircle object) {
return "Circle @ " + "(" + object.center.getCoordinateX() + "," +
object.center.getCoordinateY() + ")" + ". Its radius is " +
object.radius;
}
public double calcArea(MyCircle object) {
double area = Math.pow(object.radius, 2) * Math.PI;
return area;
}
public static void main (String[]args) {
MyCircle circle1 = new MyCircle ();
circle1.radius = 3.0;
System.out.println(circle1.calcArea(circle1));
System.out.println(circle1.toString(circle1));
}
}
class Mypoint {
private double posX;
private double posY;
public void setCoordinateX(double x) {
posX = x;
}
public void setCoordinateY(double y) {
posY = y;
}
public double getCoordinateX() {
return posX;
}
public double getCoordinateY() {
return posY;
}
}
【问题讨论】: