Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查MyRectangle2D.java类中的矩形是否重叠_Java - Fatal编程技术网

检查MyRectangle2D.java类中的矩形是否重叠

检查MyRectangle2D.java类中的矩形是否重叠,java,Java,我的任务是检查两个点是否在一个矩形内,一个矩形是否在另一个矩形内,以及一个矩形是否与另一个矩形重叠 我完成了前两个步骤,但无法解决重叠方法 这就是我所做的 public class MyRectangle2D { public static void main(String[] args) { Scanner input = new Scanner(System.in); MyRectangle2D rect = new MyRectangle2D();

我的任务是检查两个点是否在一个矩形内,一个矩形是否在另一个矩形内,以及一个矩形是否与另一个矩形重叠

我完成了前两个步骤,但无法解决重叠方法

这就是我所做的

public class MyRectangle2D {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        MyRectangle2D rect = new MyRectangle2D();

        //returns area of default rectangle
        System.out.println(rect.getArea());

        //returns perimeter of default rectangle
        System.out.println(rect.getPerimeter());

        //returns true if default (0,0) is inside rectangle
        System.out.println(rect.contains(0,0));

        //returns false if point is not in triangle
        System.out.println(rect.contains(10,10));

        MyRectangle2D r1 = new MyRectangle2D(10,2,6,4);
        System.out.println("The area of your rectangle is " + r1.getArea() + 
            " \nthe perimeter of your rectangle is " + r1.getPerimeter());

        System.out.println("Testing Rectangle 2 with points (1,8)...");

        //following lines test the contain(x,y) method
        System.out.println(r1.contains(1,8) ? "Point (1,8) is on Rectangle" : "Point(1,8) is not on Rectangle");

        System.out.println("Testing Rectangle 2 with points (10,1)...");

        System.out.println(r1.contains(10,1) ? "Point (10,1) is on Rectangle" : "Point(10,1) is not on Rectangle");

        //following lines test contains(rect) method
        System.out.println(r1.contains(new MyRectangle2D(9,1,1,1)) ? "Rectangle is inside" : "Not inside");
        System.out.println(r1.contains(new MyRectangle2D(9,1,10,2)) ? "Rectangle is inside" : "Rectangle is not inside");

        //following lines test if rectangles overlap
        System.out.println(r1.overlaps(new MyRectangle2D(4,2,8,4)));
    }

    double x;
    double y;
    double width;
    double height;

    private MyRectangle2D(){
        x = 0;
        y = 0;
        width = 1;
        height = 1;
    }

    private MyRectangle2D(double newX, double newY, 
             double newWidth, double newHeight){
         setX(newX);
         setY(newY);
         setHeight(newHeight);
         setWidth(newWidth);
     }

    double getX(){
        return x;
    }

    double getY(){
        return y;
    }

    void setX(double newA){
        x = newA;
    }

    void setY(double newA){
        y = newA;
    }

    double getWidth(){
        return width;
    }

    double getHeight(){
        return height;
    }

    void setWidth(double newA){
        width = newA;
    }

    void setHeight(double newA){
        height = newA;
    }

    double getArea(){
        double area = width * height;
        return area;
    }

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

    boolean contains(double x, double y){
        boolean inside = false;
        if(x<(getWidth()/2 + getX()) && x>getX()-(getWidth()/2)){
            if(y<(getY() + getHeight()/2) && y>getY()-(getHeight()/2))
            inside = true;
        }
        return inside;
    }

    boolean contains(MyRectangle2D r){
        boolean inside = false;
        if(r.getX()<(getWidth()/2 + getX()) && r.getX()>getX()-(getWidth()/2)){
            if(r.getY()<(getY() + getHeight()/2) && r.getY()>getY()-(getHeight()/2)){
                if(r.getWidth()<=getWidth() && r.getHeight()<=getHeight())
                inside = true;
            }   
        }   
        return inside;
    }

    boolean overlaps(MyRectangle2D r){
        boolean inside = false;
        if(contains(r.getX()+r.getWidth(),r.getY()+r.getHeight()))
        inside = true;

        if(contains(r.getX()-r.getWidth(),r.getY()-r.getHeight()))
        inside = true;
        return inside;

    }

}
公共类MyRectangle2D{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
MyRectangle2D rect=新的MyRectangle2D();
//返回默认矩形的区域
System.out.println(rect.getArea());
//返回默认矩形的周长
System.out.println(rect.getPermission());
//如果默认值(0,0)在矩形内,则返回true
System.out.println(rect.contains(0,0));
//如果点不在三角形中,则返回false
System.out.println(rect.contains(10,10));
MyRectangle2D r1=新的MyRectangle2D(10,2,6,4);
System.out.println(“矩形的面积是”+r1.getArea()+
“\n矩形的周长为”+r1.GetPermiture());
System.out.println(“带点(1,8)的测试矩形2”);
//下面几行测试contain(x,y)方法
System.out.println(r1.包含(1,8)-“点(1,8)在矩形上”:“点(1,8)不在矩形上”);
System.out.println(“带点(10,1)的测试矩形2”);
System.out.println(r1.包含(10,1)-“点(10,1)在矩形上”:“点(10,1)不在矩形上”);
//以下行测试包含(rect)方法
System.out.println(r1.contains(新的MyRectangle2D(9,1,1,1))?“矩形在里面”:“不在里面”);
System.out.println(r1.contains(新的MyRectangle2D(9,1,10,2))?“矩形在里面”:“矩形不在里面”);
//下面的行测试矩形是否重叠
System.out.println(r1.overlaps(新的MyRectangle2D(4,2,8,4));
}
双x;
双y;
双倍宽度;
双高;
私有MyRectangle2D(){
x=0;
y=0;
宽度=1;
高度=1;
}
私有MyRectangle2D(双新X、双新Y、,
双新宽度,双新高度){
setX(newX);
赛蒂(纽伊);
设置高度(新高度);
设置宽度(新宽度);
}
双getX(){
返回x;
}
双倍{
返回y;
}
void setX(双newA){
x=新A;
}
void setY(双纽瓦){
y=newA;
}
双getWidth(){
返回宽度;
}
双getHeight(){
返回高度;
}
void setWidth(双newA){
宽度=newA;
}
空隙设置高度(双倍新高度){
高度=新高度;
}
双getArea(){
双面积=宽度*高度;
返回区;
}
double getperiment(){
双周长=(2*宽度)+(2*高度);
返回周长;
}
布尔包含(双x,双y){
布尔内部=假;
if(xgetX()-(getWidth()/2)){
if(ygetY()-(getHeight()/2))
内=真;
}
返回内部;
}
布尔包含(MyRectangler){
布尔内部=假;
if(r.getX()getX()-(getWidth()/2)){
if(r.getY()getY()-(getHeight()/2)){

如果(r.getWidth()这将发现该矩形是否与另一个矩形重叠,请不要忘记将其标记为答案,并在可能的情况下向上投票

public boolean overlaps (MyRectangle2D r) {
    return x < r.x + r.width && x + width > r.x && y < r.y + r.height && y + height > r.y;
}
公共布尔重叠(MyRectangler){
返回xr.x&&yr.y;
}

吮吸不合适you@MadProgrammer感谢您的输入,别忘了对我的答案和其他所有答案进行投票。请参见以下内容: