第三章第二十八题(几何:两个矩形)(Geometry: two rectangles)

**3.28(几何:两个矩形)编写一个程序,提示用户输入两个矩形中心的x坐标和y坐标以及矩形的宽度和高度,然后判断第二个矩形是在第一个矩形内,还是和第一个矩形重叠。

下面是运行示例:
Enter r1’s center x-,y-coordinates,width,and height: 2.5 4 2.5 43
Enter r2’s center x-,y-coordinates,width,and height: 1.5 5 0.5 3
r2 is inside r1
Enter r1’s center x-,y-coordinates,width,and height: 1 2 3 5.5
Enter r2’s center x-,y-coordinates,width,and height: 3 4 4.5 5
r2 overlaps r1
Enter r1’s center x-,y-coordinates,width,and height: 1 2 3 3
Enter r2’s center x-,y-coordinates,width,and height: 40 45 3 2
r2 does not overlap r1

**3.28(Geometry: two rectangles) Write a program that prompts the user to enter the center x-, y-coordinates, width, and height of two rectangles and determines whether the second rectangle is inside the first or overlaps with the first.

Here are the simple runs:
Enter r1’s center x-,y-coordinates,width,and height: 2.5 4 2.5 43
Enter r2’s center x-,y-coordinates,width,and height: 1.5 5 0.5 3
r2 is inside r1
Enter r1’s center x-,y-coordinates,width,and height: 1 2 3 5.5
Enter r2’s center x-,y-coordinates,width,and height: 3 4 4.5 5
r2 overlaps r1
Enter r1’s center x-,y-coordinates,width,and height: 1 2 3 3
Enter r2’s center x-,y-coordinates,width,and height: 40 45 3 2
r2 does not overlap r1

下面是参考答案代码:

import java.util.*;

public class TwoRectanglesQuestion28 {
	public static void main(String[] args) {
		double r1XCoordinates, r1YCoordinates, r1Width, r1Height;
		double r2XCoordinates, r2YCoordinates, r2Width, r2Height;
		
		double r1LeftTopPointX, r1LeftTopPointY;
		double r1LeftBottomPointX, r1LeftBottomPointY;
		double r1RightTopPointX, r1RightTopPointY;
		double r1RightBottomPointX,r1RightBottomPointY;

		double r2LeftTopPointX, r2LeftTopPointY;
		double r2LeftBottomPointX, r2LeftBottomPointY;
		double r2RightTopPointX, r2RightTopPointY;
		double r2RightBottomPointX, r2RightBottomPointY;
		
		
		System.out.print("Enter r1's center x-,y-coordinates,width,and height: ");
		Scanner input = new Scanner(System.in);
		r1XCoordinates = input.nextDouble();
		r1YCoordinates = input.nextDouble();
		r1Width = input.nextDouble();
		r1Height = input.nextDouble();
		
		r1LeftTopPointX = r1XCoordinates - r1Width / 2;
		r1LeftTopPointY = r1YCoordinates + r1Height / 2;
		
		r1LeftBottomPointX = r1XCoordinates - r1Width / 2;
		r1LeftBottomPointY = r1YCoordinates - r1Height / 2;
		
		r1RightTopPointX = r1XCoordinates + r1Width / 2;
		r1RightTopPointY = r1YCoordinates + r1Height / 2;
		
		r1RightBottomPointX = r1XCoordinates + r1Width / 2;
		r1RightBottomPointY = r1YCoordinates - r1Height / 2;
		

		System.out.print("Enter r2's center x-,y-coordinates,width,and height: ");
		r2XCoordinates = input.nextDouble();
		r2YCoordinates = input.nextDouble();
		r2Width = input.nextDouble();
		r2Height = input.nextDouble();
		
		r2LeftTopPointX = r2XCoordinates - r2Width / 2;
		r2LeftTopPointY = r2YCoordinates + r2Height / 2;
		
		r2LeftBottomPointX = r2XCoordinates - r2Width / 2;
		r2LeftBottomPointY = r2YCoordinates - r2Height / 2;
		
		r2RightTopPointX = r2XCoordinates + r2Width / 2;
		r2RightTopPointY = r2YCoordinates + r2Height / 2;
		
		r2RightBottomPointX = r2XCoordinates + r2Width / 2;
		r2RightBottomPointY = r2YCoordinates - r2Height / 2;
		
		
		
		if(r1Width * r1Height >= r2Width * r2Height)
		{
			if( (r2LeftTopPointX >= r1LeftTopPointX && r2LeftTopPointX <= r1RightTopPointX
					&& r2LeftTopPointY >= r1LeftBottomPointY && r2LeftTopPointY <= r1RightTopPointY)
					
				&& (r2LeftBottomPointX >= r1LeftTopPointX && r2LeftBottomPointX <= r1RightTopPointX
					&& r2LeftBottomPointY >= r1LeftBottomPointY && r2LeftBottomPointY <= r1RightTopPointY)
				
				&& (r2RightTopPointX >= r1LeftTopPointX && r2RightTopPointX <= r1RightTopPointX
					&& r2RightTopPointY >= r1LeftBottomPointY && r2RightTopPointY <= r1RightTopPointY)
				
				&& (r2RightBottomPointX >= r1LeftTopPointX && r2RightBottomPointX <= r1RightTopPointX
					&& r2RightBottomPointY >= r1LeftBottomPointY && r2RightBottomPointY <= r1RightTopPointY) )
			{
				System.out.println("r2 is inside r1");
			}
			else if((r2LeftTopPointX >= r1LeftTopPointX && r2LeftTopPointX <= r1RightTopPointX
					&& r2LeftTopPointY >= r1LeftBottomPointY && r2LeftTopPointY <= r1RightTopPointY)
					
				|| (r2LeftBottomPointX >= r1LeftTopPointX && r2LeftBottomPointX <= r1RightTopPointX
					&& r2LeftBottomPointY >= r1LeftBottomPointY && r2LeftBottomPointY <= r1RightTopPointY)
				
				|| (r2RightTopPointX >= r1LeftTopPointX && r2RightTopPointX <= r1RightTopPointX
					&& r2RightTopPointY >= r1LeftBottomPointY && r2RightTopPointY <= r1RightTopPointY)
				
				|| (r2RightBottomPointX >= r1LeftTopPointX && r2RightBottomPointX <= r1RightTopPointX
					&& r2RightBottomPointY >= r1LeftBottomPointY && r2RightBottomPointY <= r1RightTopPointY))
			{
				System.out.println("r2 overlaps r1");
			}
			else
			{
				System.out.println("r2 does not overlap r1");
			}
		}
		else
		{
			if((r1LeftTopPointX >= r2LeftTopPointX && r1LeftTopPointX <= r2RightTopPointX
					&& r1LeftTopPointY >= r2LeftBottomPointY && r1LeftTopPointY <= r2RightTopPointY)
				&& (r1LeftBottomPointX >= r2LeftTopPointX && r1LeftBottomPointX <= r2RightTopPointX
					&& r1LeftBottomPointY >= r2LeftBottomPointY && r1LeftBottomPointY <= r2RightTopPointY)
				&& (r1RightTopPointX >= r2LeftTopPointX && r1RightTopPointX <= r2RightTopPointX
					&& r1RightTopPointY >= r2LeftBottomPointY && r1RightTopPointY <= r2RightTopPointY)
				&& (r1RightBottomPointX >= r2LeftTopPointX && r1RightBottomPointX <= r2RightTopPointX
					&& r1RightBottomPointY >= r2LeftBottomPointY && r1RightBottomPointY <= r2RightTopPointY))
			{
				System.out.println("r1 is inside r2");
			}
			else if((r1LeftTopPointX >= r2LeftTopPointX && r1LeftTopPointX <= r2RightTopPointX
					&& r1LeftTopPointY >= r2LeftBottomPointY && r1LeftTopPointY <= r2RightTopPointY)
				|| (r1LeftBottomPointX >= r2LeftTopPointX && r1LeftBottomPointX <= r2RightTopPointX
					&& r1LeftBottomPointY >= r2LeftBottomPointY && r1LeftBottomPointY <= r2RightTopPointY)
				|| (r1RightTopPointX >= r2LeftTopPointX && r1RightTopPointX <= r2RightTopPointX
					&& r1RightTopPointY >= r2LeftBottomPointY && r1RightTopPointY <= r2RightTopPointY)
				|| (r1RightBottomPointX >= r2LeftTopPointX && r1RightBottomPointX <= r2RightTopPointX
					&& r1RightBottomPointY >= r2LeftBottomPointY && r1RightBottomPointY <= r2RightTopPointY))
			{
				System.out.println("r1 overlaps r2");
			}
			else
			{
				System.out.println("r1 does not overlap r2");
			}
		}
		input.close();
	}
}

运行效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:编写程序要养成良好习惯
如:1.文件名要用英文,具体一点
2.注释要英文
3.变量命名要具体,不要抽象(如:a,b,c等等),形式要驼峰化
4.整体书写风格要统一(不要这里是驼峰,那里是下划线,这里的逻辑段落空三行,那里相同的逻辑段落空5行等等)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值