Java 如何在本例中返回点

Java 如何在本例中返回点,java,inheritance,methods,nullpointerexception,Java,Inheritance,Methods,Nullpointerexception,我试图从扩展shape类的circle.java类返回一个点。目前我一直收到一个空指针异常。我需要使用继承的getPoints()重新运行中心点;方法,但Inhered方法返回一个数组,并且要从circle返回的值不是数组。如何返回中心点而不使用单独的返回方法。 我的形体课如下 import java.awt.Point; public abstract class Shape { private String name; private Point[] points; protected

我试图从扩展shape类的circle.java类返回一个点。目前我一直收到一个空指针异常。我需要使用继承的getPoints()重新运行中心点;方法,但Inhered方法返回一个数组,并且要从circle返回的值不是数组。如何返回中心点而不使用单独的返回方法。 我的形体课如下

import java.awt.Point;

public abstract class Shape {
private String  name;
private Point[] points;
protected Shape(){};
protected Shape(String aName) {
    name = aName;
}

public final String getName() {
    // TODO Implement method
    return name;
}

protected final void setPoints(Point[] thePoints) {
    points = thePoints;
}

public final Point[] getPoints() {
    // TODO Implement method
    return points;
}

public abstract double getPerimeter();

public static double getDistance(Point one, Point two) {
    double x = one.getX();
    double y = one.getY();
    double x2 = two.getX();
    double y2 = two.getY();
    double x3 = x - x2;
    double y3 = y - y2;
    double ypow = Math.pow(y3, 2);
    double xpow = Math.pow(x3, 2);
    double added = xpow + ypow;
    double distance = Math.sqrt(added);
    return distance;
}
}
我的循环班是一个循环班

import java.awt.Point;

public class Circle extends Shape{

private double radius;

public Circle(Point center, int aradius) {
super("Circle");

radius = aradius;
if(radius < 0){
    radius = 0;
}
else{
radius = aradius;
}

}

@Override
public double getPerimeter() {
double perim = 2 * Math.PI * radius;
return perim;
}
  public double getRadius(){
  return radius;
}

}
导入java.awt.Point;
公共阶级圈子扩大化{
私人双半径;
公共圈(点中心,国际阿拉迪乌斯){
超级(“圆圈”);
半径=aradius;
如果(半径<0){
半径=0;
}
否则{
半径=aradius;
}
}
@凌驾
公共双边界{
双周长=2*Math.PI*半径;
回归期;
}
公共双getRadius(){
返回半径;
}
}

我能想到的最简单的解决方案就是简单地使用
Shape
类中的
设置点
方法

public Circle(Point center, int aradius) {
    super("Circle");
    //...
    setPoints(new Point[]{center});
}

您获得
NullPointerException
的原因是,您从未获得
形状的
设定点

我不确定
应该包含什么,但对我来说唯一有意义的是形状中的所有点。对于像圆这样的形状,哪个IMO会变得有点棘手,而确定一个中心点似乎更为棘手(尽管我猜对于圆来说,它几乎就是数组的中点,这取决于顺序?)

(仔细想想,
也可以包含子类决定它应该包含的任何内容,例如一个圆的1个中心点和一个矩形的4个点..)


无论如何,在使用
getPoints

之前,您必须使用一些数据填充
形状
数组(通过调用
设置点
),我们可以看到异常轨迹吗值得注意的是,您的
圆中命名为
中心(点,int)
构造函数没有在任何地方使用。不确定这是否与你的问题有关。