这是我的Java问题:

我的Circle类实现了Shape接口,因此它必须实现所需的所有方法。我对方法boolean contains(Rectangle2D r)遇到问题,该方法“测试Shape的内部是否完全包含指定的Rectangle2D”。现在,Rectangle2D是一个抽象类,据我所知,它不提供任何方法来获取矩形角的坐标。更准确地说:“Rectangle2D类描述了由位置(x,y)和尺寸(wxh)定义的矩形。该类仅是存储2D矩形的所有对象的抽象超类。坐标的实际存储表示形式留给子类”。

那么我该如何解决呢?

请在下面找到我的部分代码:

public class Circle implements Shape
{
private double x, y, radius;

public Circle(double x, double y, double radius)
{
    this.x = x;
    this.y = y;
    this.radius = radius;
}

// Tests if the specified coordinates are inside the boundary of the Shape
public boolean contains(double x, double y)
{
    if (Math.pow(this.x-x, 2)+Math.pow(this.y-y, 2) < Math.pow(radius, 2))
    {
        return true;
    }
    else
    {
        return false;
    }
}

// Tests if the interior of the Shape entirely contains the specified rectangular area
public boolean contains(double x, double y, double w, double h)
{
    if (this.contains(x, y) && this.contains(x+w, y) && this.contains(x+w, y+h) && this.contains(x, y+h))
    {
        return true;
    }
    else
    {
        return false;
    }
}

// Tests if a specified Point2D is inside the boundary of the Shape
public boolean contains(Point2D p)
{
    if (this.contains(p.getX(), p.getY()))
    {
        return true;
    }
    else
    {
        return false;
    }
}

// Tests if the interior of the Shape entirely contains the specified Rectangle2D
public boolean contains(Rectangle2D r)
{
    // WHAT DO I DO HERE????
}
}

最佳答案

Rectangle2DgetMaxX, getMaxY, getMinX, getMinY继承RectangularShape。这样您就可以获得角落的坐标。

http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/geom/Rectangle2D.html

请参见“从类java.awt.geom.RectangularShape继承的方法”。

10-08 04:03