Java黑皮书课后题第3章:**3.22(几何:点是否在圆内)编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以(0,0)为圆心、半径为10的圆内
**3.22(几何:点是否在圆内)编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以(0,0)为圆心、半径为10的圆内
- 题目
- 题目概述
- 课本提示与举例、运行示例
- 破题
- 代码
- 两个浮点数的比较
题目
题目概述
**3.22(几何:点是否在圆内)编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以(0,0)为圆心、半径为10的圆内
课本提示与举例、运行示例
提示:如果一个点到(0,0)的距离小于半径即在圆内,两点之间距离公式(已处理):Math.pow( (Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2)), 0.5)
例如:(4,5)是圆内一点,(9, 9)是圆外一点(圆:(0,0)圆心半径为10)
Enter a point with two coordinates: 4 5
Point (4.0, 5.0) is in the circle
Enter a point with two coordinates: 9 9
Point (9.0, 9.0) is not in the circle
破题
先用上面公式判断是否在圆内
输出点的坐标
难点在输出语句中的如何控制not的输出:打标(boolean标记)(打标已经在之前的博文中用了多次,欢迎关注专栏)
除此之外,两个浮点数之间的比较也颇为有趣,详细在代码下面
代码
import java.util.Scanner;public class Test3_22 {public static void main(String[] args) {// 获取点坐标Scanner input = new Scanner(System.in);System.out.println("Enter a point with two coordinates: ");double x2 = input.nextDouble(), y2 = input.nextDouble();// 判断是否在圆内double x1 = 0.0, y1 = 0.0;double distance = Math.pow( (Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2)), 0.5);double radius = 10.0;final double EPSILON = 0.001;boolean bool = false;if((radius - distance) > EPSILON){// 这里认为点在圆内bool = true;}// 输出结果if(bool){System.out.println("Point (" + x2 + ", " + y2 + ") is in the circle");}else{System.out.println("Point (" + x2 + ", " + y2 + ") is not in the circle");}} }两个浮点数的比较
参考资料:
https://blog.csdn.net/bupa900318/article/details/80553695
博主没有联系到,没有允许转载部分内容
如果感兴趣可以看一下比较方法
本题中使用了第一个方法:两值相减与某一非常小的浮点数比较大小
总结
以上是生活随笔为你收集整理的Java黑皮书课后题第3章:**3.22(几何:点是否在圆内)编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以(0,0)为圆心、半径为10的圆内的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Java黑皮书课后题第3章:**3.21
- 下一篇: Java黑皮书课后题第3章:**3.23