用Java创建多个数据类型

时间:2018-04-17 16:55:05

标签: java

我这里有Java项目的骨架。这是基于创建数据类型,我基本上会找到区域,周长,找出它们是相交还是相互包含。我理解我需要使用的公式但是我如何实际创建矩形b所以就像初始矩形我必须有x,y中心和宽度和高度?我曾尝试以类似的方式声明矩形b,但它拒绝分配任何变量。

为了找到矩形b是否与另一个矩形相交,我需要定义它以便对矩形的角进行计算等,这是我的代码:

public class OwnRectangles {

    private final double x,y;  //center of rectangle
    private final double width; //width of rectangle
    private final double height; //height of rectangle

    public Rectangle(double x0, double y0, double w, double h)
    {
        x=x0;
        y=y0;
        width=w;
        height=h;
    }
    public double area()
    {
        return width*height;
    }

    public double perimeter()
    {
        return height*2 + width*2;
    }

    public boolean intersects(Rectangle b)
    {

    }

    public boolean contains(Rectangle b)
    {

    }

    public void draw(Rectangle b)
    {
        /*Draw rectangle on standard drawing*/
    }

}

我本质上是在尝试创建另一个矩形,我尝试了类似这样的东西:

public OwnRectanglesb(double x2, double y2, double w2, double h2)
{
    x=x2;
    y=y2;
    width=w2;
    height=h2;
}

这个名称不仅与OwnRectangles b不匹配,而且如果有意义的话,public ...应该只是OwnRectangles。很简单,我想定义一个要使用的第二个矩形。

4 个答案:

答案 0 :(得分:1)

课程OwnRectangle需要与代码中Rectangle的使用相匹配,例如更改为:

public class Rectangle /* CHANGED FROM OwnRectangle to Rectangle */ {
    private final double x,y;  //center of rectangle
    private final double width; //width of rectangle
    private final double height; //height of rectangle

    public Rectangle(double x0, double y0, double w, double h)
    {
        x=x0;
        y=y0;
        width=w;
        height=h;
    }
    public double area()
    {
        return width*height;
    }

    public double perimeter()
    {
        return height*2 + width*2;
    }

    public boolean intersects(Rectangle b)
    {

    }

    public boolean contains(Rectangle b)
    {

    }

    public void draw(Rectangle b)
    {
    /*Draw rectangle on standard drawing*/
    }
}

答案 1 :(得分:1)

为了创建矩形对象并确定它们是否相交,您的代码将如下所示:

Rectangle firstRectangle = new Rectangle(1, 2, 3, 4);
Rectangle secondRectangle = new Rectangle(5, 6, 7, 8);
boolean intersects = firstRectangle.intersects(secondRectangle);

1, 2, 3, 4, 5, 6, 7, 8只是任意值,您将替换为真值。然后在intersects方法中,您只需将x,y,width和height与b.x,b.y,b.width和b.height进行比较。最后,对Rectangle对象的所有引用应该被称为Rectangle相同的事物,而不是RectangleOwnRectangle的交换。

答案 2 :(得分:1)

我已经找到了答案。为此,我只创建了类的不同实例,直接放在:

public OwnRectangles(double x0, double y0, double w, double h)
{
    x=x0;
    y=y0;
    width=w;
    height=h;

    Rectangle a = new OwnRectangles(//put arguments here);
    Rectangle b = new OwnRectangles(//put arguments here);
}

可以看出,我已经基于类矩形创建了两个不同的矩形,当然在括号中我会放置参数,允许用户将矩形的宽度高度等设置为他们想要的任何东西。 / p>

答案 3 :(得分:0)

您的班级名称为OwnRectangles,但似乎是构造函数的名称为Rectangle。构造函数名称必须与类名匹配,否则它只是一个方法。你可以通过写:

来纠正它
public class OwnRectangles {

  private final double x,y;  //center of rectangle
  private final double width; //width of rectangle
  private final double height; //height of rectangle

  public OwnRectangles(double x0, double y0, double w, double h) {
  ...