在Java中创建多个数据类型

在Java中创建多个数据类型,java,Java,我这里有一个Java项目的框架。这是基于创建数据类型,我基本上会让它找到面积、周长,找到它们是否相交或包含彼此。我理解我需要使用的公式,但是我如何实际创建矩形b,就像初始矩形一样,我必须有一个x,y中心,一个宽度和高度?我曾尝试以类似的方式声明矩形b,但它拒绝分配任何变量 为了确定矩形b是否与另一个矩形相交,我需要对其进行定义,以便计算矩形的角点等,以下是我的代码: public class OwnRectangles { private final double x,y; //ce

我这里有一个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;
}

这个名称不仅与Own矩形b不匹配,而且与公共矩形b不匹配。。。如果有意义的话,它应该是自己的矩形。非常简单,我想定义第二个要使用的矩形。

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*/
    }
}

您的类名是
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) {
  ...

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

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
只是任意值,您可以将其替换为真值。然后,在
相交方法中,您只需将x、y、宽度和高度与b.x、b.y、b.width和b.height进行比较。最后,对矩形对象的所有引用都应该被称为同一事物
Rectangle
,而不是互换
Rectangle
OwnRectangle
,我已经找到了答案。为此,我只需创建该类的不同实例,将其直接放在下面:

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

可以看出,我基于类矩形创建了两个不同的矩形,当然,我会在括号中添加参数,允许用户将矩形的宽度、高度等设置为他们想要的任何值。

a)对于类
OwnRectangles
构造函数应该具有相同的名称;b) 最后两个方法缺少返回语句(因此无法编译);c) 你说“它拒绝分配任何变量”是什么意思?@khachik当我尝试创建一个矩形B时,现在更改为与下面提到的其他名称正确匹配,它不允许我给x值赋值,比如原始矩形。您的代码没有编译,编译器错误应该是一个提示,提示您corde出了什么问题(检查下面的答案)。“
双x0,双y0,双w,双h
”-请不要这样做。给参数起一些有意义的名字。@Turing85我会的,这只是上面提到的一个骨架,但是谢谢你的帮助advice@khachik没关系,我自己解决了!我声明了类似于Own矩形b的东西,但它不应该有空格。编辑未解决,因为它仍然必须与项目名称匹配,因此我不能使用OwnRectangles这是一个很好的示例,但是我希望设置一个完全不同的矩形,因为我想使用x、y、宽度和高度来查找矩形的角点,并将其用于我的计算