Java黑皮书课后题第4章:*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值
*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值
- 题目
- 题目概述
- 破题
- 运行示例
- 代码
题目
题目概述
*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值
假设(x1,y1)和(x2, y2)是两个点的地理经纬度,两个点之间的最大圆距离可以用以下公式表示:d = 半径 * arccos(sin(x1) * sin(x2) + cos(x1) * cos(x2) * cos(y1 - y2))
对上式进行处理:d = R * Math.acos(Math.sin(x1) * Math.sin(x2) + Math.cos(x1) * Math.cos(x2) * Math.cos(y1 - y2))
公式中的经纬度是相对北边、西边,使用负值表示南边和东边
地球的平均半径为6 371.01km
需要使用Math.toRadians方法将度转换为弧度数
破题
获取用户输入后,需要使用Math.toRadians方法将输入的度转换为弧度数
转换后再代入两点之间的最大圆距离公式
运行示例
Enter point 1 (latitude and longitude) in degrees: 39.55 -116.25
Enter point 2 (latitude and longitude) in degrees: 41.5 87.37
The distance between the two points is 10691.79183231593
代码
import java.util.Scanner;public class Test4_2 {public static void main(String[] args) {// 获取输入Scanner input = new Scanner(System.in);System.out.println("Enter point 1 (latitude and longitude) in degrees: ");double x1 = Math.toRadians(input.nextDouble()), y1 = Math.toRadians(input.nextDouble());System.out.println("Enter point 2 (latitude and longitude) in degrees: ");double x2 = Math.toRadians(input.nextDouble()), y2 = Math.toRadians(input.nextDouble());// 地球半径final double R = 6371.01;// 代入公式double d = R * Math.acos(Math.sin(x1) * Math.sin(x2) + Math.cos(x1) * Math.cos(x2) * Math.cos(y1 - y2));// 输出System.out.println("The distance between the two points is " + d + " km");}
}
Java黑皮书课后题第4章:*4.2(几何:最大圆距离)最大圆面积是指球面上两个点间的距离。编写一个程序,提示用户以度为单位输入地球上两个点的经纬度,显示其最大圆距离值相关推荐
- Java黑皮书课后题第8章:*8.1(求矩阵中各列数字的和)使用下面的方法头编写一个方法,求矩阵中特定列的所有元素的和。编写一个测试程序,读取3*4矩阵,显示每列元素的和
*8.1(求矩阵中各列数字的和)使用下面的方法头编写一个方法,求矩阵中特定列的所有元素的和.编写一个测试程序,读取3*4矩阵,显示每列元素的和 题目 题目描述与运行示例 破题 代码 题目 题目描述与运 ...
- Java黑皮书课后题第5章:*5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4个独立的程序打印下面的图案
*5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4个独立的程序打印下面的图案 题目 题目概述 破题 代码 题目 题目概述 *5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4 ...
- Java黑皮书课后题第4章:4.19(商业:检测ISBN-10)改写编程练习题3.9,将ISBN号作为一个字符串输入
4.19(商业:检测ISBN-10)改写编程练习题3.9,将ISBN号作为一个字符串输入 题目 题目概述 编程练习题3.9全面分析博文 3.9代码 破题 代码 题目 题目概述 4.19(商业:检测IS ...
- Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类
Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...
- Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))
Java黑皮书课后题第10章:*10.1设计一个名为Time的类.编写一个测试程序,创建两个Time对象 题目 程序 代码 Test1.java Test1_Time.java 运行结果 UML 题目 ...
- Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)
Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...
- Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类
Java黑皮书课后题第9章:*9.10(代数:二次方程式)为二次方程式设计一个名为QuadraticEquation的类 题目 破题 代码 Test10 Test10_QuadraticEquatio ...
- Java黑皮书课后题第1章:1.13(代数:求解2*2线性方程组)编写程序,求解以下方程组并显示x和y的值 3.4x+50.2y=44.5 2.1x+0.55y=5.9
Java黑皮书课后题第1章:(代数:求解2*2线性方程组) 题目 题目描述 破题 代码块 方法评析 赘述 修改日志 题目 题目描述 求x和y值: 3.4x+50.2y=44.5 2.1x+0.55y= ...
- Java黑皮书课后题第1章:*1.11(人口估算)编写一个程序,显示未来5年的每年人口数。假设当前的人口是312 032 486,每年有365天
Java黑皮书课后题第1章:*1.11(人口估算) 题目 题目描述 破题 代码块 方法评析 为什么print函数内的表达式不能分开 修改日志 题目 题目描述 *1.11(人口估算)编写一个程序,显示未 ...
最新文章
- win10+Linux双系统安装及一些配置问题
- 建筑师——由来已久的梦想
- GitHub上那些值得一试的JAVA开源库--转
- os_mem.c(全)
- IDEA创建java文件失败,但是new选项中有java class选项,设置中file and Code Templates中有对应模板
- OpenShift 4 之Istio-Tutorial (9) 访问限流
- vue 循环tabs 标签页 组件_Vue render函数实战--实现tabs选项卡组件
- IOS:UI设计之UISegmentedControl相关基础
- AWVS docker版部署
- 概率图模型: Coursera课程资源分享和简介
- OneNote网页版链接用桌面应用打开报错的解决
- mac 怎么抓取 iphone 手机 日志
- mariadb mysql.h_MariaDB(MySQL)的常用命令1 【检索数据】
- 学java对年龄有要求吗_Java学习有年龄限制吗,多大年纪就不能学习?
- 移动硬盘装Ubuntu系统小记
- Java并发编程之CyclicBarrier和CountDownLatch
- mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB
- 21天,在Github上获取 6300 star
- 汽车保养技巧 十大汽车保养技巧
- 笔记:二元Probit与Logit模型