toString处的空指针异常错误

Mun*_*uno 2 java nullpointerexception

我的toString方法中出现空指针异常错误.我不知道为什么.错误可以通过多种方式发生.最常见的是,声明了对象的引用,但对象本身仍未创建.我已声明并创建(初始化正确的单词?)Mycircle circle1 = new Mycircle ();Mypoint center = new Mypoint ();

当我调用我的getter方法时,我怀疑我没有初始化任何字段,但事实并非如此.setter方法干净利落 - 我已成功输入值.这是否意味着我的getter方法可以访问某些非null值.

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

Mik*_*sen 9

MyCircle构造函数中,您将创建一个名为centerhere 的局部变量:

Mypoint center = new Mypoint ();
Run Code Online (Sandbox Code Playgroud)

你可能想要的是初始化实例成员:

center = new Mypoint ();
Run Code Online (Sandbox Code Playgroud)