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

  • 题目
    • 题目概述
    • 运行示例
    • 破题
  • 代码

题目

题目概述

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

破题

三种情况:

  1. 一个矩形(中心(x2,y2))在另一个(中心(x1,y1))之:两个中心距离在x、y上的分量假设为x0、y0,中心(x1,y1)的高为h1、宽为w1,中心(x2,y2)的高为h2、宽为w2,则此时(x0 + w2 / 2) < (w1 / 2),且(y0 + h2 / 2) < (h1 / 2)
  2. 重叠(变量用1中的):((w1 - w2) / 2) < x0 < ((w1 + w2) / 2) 且 ((h1 - h2) / 2) < y0 < ((h1 + h2) / 2)
  3. 相离:x0 > ((w1 + w2) / 2) y0 > ((h1 + h2) / 2)

代码

import java.util.Scanner;public class Test3_28 {public static void main(String[] args) {// 从控制台获取数据Scanner input = new Scanner(System.in);System.out.println("Enter r1's center x-. y- coordinates, width, and height: ");double x1 = input.nextDouble(), y1 = input.nextDouble();double w1 = input.nextDouble(), h1 = input.nextDouble();System.out.println("Enter r2's center x-, y- coordinates, width, and height: ");double x2 = input.nextDouble(), y2 = input.nextDouble();double w2 = input.nextDouble(), h2 = input.nextDouble();// 计算两个中心之间距离的分量double x0 = Math.abs(x2 - x1);double y0 = Math.abs(y2 - y1);// 判断位置if(((x0 + w2 / 2) <= (w1 / 2)) && ((y0 + h2 / 2) <= (h1 / 2))) {System.out.println("r2 is inside r1");}else if(((w1 - w2) / 2) < x0 && x0 < ((w1 + w2) / 2) && ((h1 - h2) / 2) < y0 && y0 < ((h1 + h2) / 2))System.out.println("r2 overlaps r1");elseSystem.out.println("r2 does not overlap r1");}
}

Java黑皮书课后题第3章:**3.28(几何:两个矩形)编写一个程序,提示用户输入两个矩形中心的x坐标和y坐标以及矩形的宽度和高度,然后判断第二个矩形是在第一个矩形内,还是和第一个矩形重叠相关推荐

  1. Java黑皮书课后题第9章:*9.6(秒表)设计一个名为StopWatch的类,该类包含……。编写一个测试程序,用于测量使用选择排序对100000个数字进行排序的执行时间

    Java黑皮书课后题第9章:*9.6(秒表)设计一个名为StopWatch的类,该类包含--.编写一个测试程序,用于测量使用选择排序对100000个数字进行排序的执行时间 题目 破题 代码 Test6 ...

  2. Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序

    *6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数-例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序 题目 题目概述 破题 代码 ...

  3. Java黑皮书课后题第4章:*4.10(猜测生日)改写程序清单4-3,提示用户输入字符Y代表“是”N代表“否”,代替之前输入1表示“是”,0表示“否

    *4.10(猜测生日)改写程序清单4-3,提示用户输入字符Y代表"是"N代表"否",代替之前输入1表示"是",0表示"否 题目 题 ...

  4. Java黑皮书课后题第3章:*3.18(运输成本)一个运输公司使用下面的函数,根据运输重量(以磅为单位)来计算运输成本(美元为单位)。编写程序,提示用户输入包裹重量,显示运输成本

    *3.18(运输成本)一个运输公司使用下面的函数,根据运输重量(以磅为单位)来计算运输成本(美元为单位).编写程序,提示用户输入包裹重量,显示运输成本 题目 题目概述 注意 代码 System.exi ...

  5. Java黑皮书课后题第8章:*8.25(马尔可夫矩阵)一个n*n的矩阵,如果每个元素都是正数,并且每列的元素的和为1,则成为正马尔可夫矩阵。编写下面的方法来检测矩阵是否是马尔可夫矩阵

    *8.25(马尔可夫矩阵)一个n*n的矩阵,如果每个元素都是正数,并且每列的元素的和为1,则成为正马尔可夫矩阵.编写下面的方法来检测矩阵是否是马尔可夫矩阵 题目 题目描述与运行示例 破题 代码 题目 ...

  6. Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间

    7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字.估算调用程序清单7-6中的linearSearch方法的执行时间 题目 题目描述 程序清单7-6的linearSe ...

  7. Java黑皮书课后题第5章:**5.33(完全数)如果一个正整数等于除它它本身外其他所有除数之和。就称之为完全数。如6是第一个完全数,因为6=1+2+3。10000以下的完全数有4个,编写程序找出

    5.33(完全数)如果一个正整数等于除它它本身外其他所有除数之和.就称之为完全数.如6是第一个完全数,因为6=1+2+3.10000以下的完全数有4个,编写程序找出 题目 题目概述 破题 代码 运行结 ...

  8. Java黑皮书课后题第5章:**5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+……1/(根624+根625)

    @[TOC](5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+--1/(根624+根625)) 题目 题目概述 5.35(加法)编写程序,计算 ...

  9. Java黑皮书课后题第6章:6.10(使用isPrime方法)程序清单6-7提供了测试某个数字是否是素数的方法isPrime(int number)。使用这个方法求小于10000的素数的个数

    6.10(使用isPrime方法)程序清单6-7提供了测试某个数字是否是素数的方法isPrime(int number).使用这个方法求小于10000的素数的个数 题目 题目描述 程序清单6-7代码 ...

  10. Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)

    Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...

最新文章

  1. linux更新驱动脚本,编写Linux驱动常见错误(不断更新)!
  2. C# 用装饰模式实现蝌蚪变青蛙的过程
  3. ios请求php接口失败,laravel,php_iOS调用Laravel接口返回错误信息,laravel,php,ios - phpStudy...
  4. Python-图像的手绘效果
  5. .NET Core 2.0 Preview2 发布汇总
  6. 【转】TCP协议的无消息边界问题
  7. 面向.Net程序员的dump分析
  8. java 访问路径_java获取项目访问路径的相关方法
  9. 合并排序时间复杂度推导
  10. 一个前端资源站 http://www.bootcss.com/
  11. Infor Framework Task Man 服务无法启动
  12. 自己制作 XP With SP3 系统光盘 包括驱动SATA集成AHCI驱动
  13. Postman测试文件图片上传接口
  14. 一个关于Linux Bridge配置的吐嘈
  15. 食堂自助点餐系统NABCD
  16. 苹果iPhone手机如何安装Tiktok?最新IOS苹果TikTok抖音国际版下载免拔卡安装使用教程
  17. OWASP ZAP 扫描漏洞误报分析
  18. win10安装MinGW-64
  19. Android11 SystemUI启动流程源码分析(一)——SystemUIApplication的创建
  20. VS2017应用在XP系统上运行

热门文章

  1. 太阳花浏览器_一道浏览器面试题,就能看出你的前端功底
  2. 钉钉宜搭3.0发布!易连接、酷数据、更安全
  3. 活动回顾 | 8月7日Apache Flink Meetup
  4. 浅谈如何成为技术一号位
  5. 函数计算助力高德地图平稳支撑亿级流量高峰
  6. 事务隔离级别,看这一篇就够了
  7. 生产可用:是时候来一个微前端架构了!
  8. java同步锁如何使用_java 同步锁(synchronized)的正确使用姿势
  9. 《小小梦魇2》直击青少年的深层焦虑
  10. MySQL备份与恢复——基于OUTFILE /LOAD DATA 逻辑备份恢复