gpt4 book ai didi

java - 给定纬度和经度,如何打印两个城市之间的距离

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:12 25 4
gpt4 key购买 nike

我是这样开始我的程序的:

 public static void main( String[] args )
{
if(args.length < 2)
{
System.err.println("Usage: java -jar lab5.jar infile outfile");
System.exit(99);
}

Cruncher dataManipulator = new Cruncher(args[0], args[1]);

dataManipulator.openFiles();
dataManipulator.findDistance();
dataManipulator.writeRecords();
dataManipulator.closeFiles();
}
String oneCity = "British Columbia:Vancouver:49° 17' N:123° 8' W";
String twoCity = "Ontario:Hamilton:43° 15' N:79° 52' W";
String[] source;
String[] rawLatitude;
String[] rawLongitude;
int sourceLatDegrees;
int sourceLatMinutes;

if(twoCity.matches("Ontario:Hamilton.*")){
source = twoCity.split(":");
for(String inspect: source){
System.out.printf("%s\n", inspect);
}
rawLatitude = source[2].split("\\D+");
for(String inspect: rawLatitude){
System.out.printf("%s\n", inspect);
}
sourceLatDegrees = Integer.parseInt(rawLatitude[0]);
sourceLatMinutes = Integer.parseInt(rawLatitude[1]);
System.out.printf("source lat degrees %d source lat minutes %d\n",
sourceLatDegrees, sourceLatMinutes);
}

double earthRadius = 6371; // in km
double distance = Math.acos(Math.sin(Lat1) * Math.sin(Lat2) +
Math.cos(Lat1) * Math.cos(Lat2) *
Math.cos(Long2 - Long1)) * earthRadius;

public static double rad2deg(double rad) {

return (rad * 180.0 / Math.PI);

}

}

我需要显示一个输出,提示用户输入两个城市和省份名称。它将在屏幕上打印一条消息,说明两个城市之间的距离(以公里为单位)。如果在文件中找不到其中一个城市,您将在屏幕上写入一条错误消息,说明未找到哪个城市,然后默默地结束程序。如果用户两次输入相同的城市和省份名称,那么您的程序应该做一些礼貌和明智的事情。有人可以帮我打印部分代码吗?谢谢。

最佳答案

来自https://www.geodatasource.com/developers/java

class DistanceCalculator
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "M") + " Miles\n");
System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "K") + " Kilometers\n");
System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "N") + " Nautical Miles\n");
}

private static double distance(double lat1, double lon1, double lat2, double lon2, String unit) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
if (unit == "K") {
dist = dist * 1.609344;
} else if (unit == "N") {
dist = dist * 0.8684;
}

return (dist);
}


private static double deg2rad(double deg) {
return (deg * Math.PI / 180.0);
}


private static double rad2deg(double rad) {
return (rad * 180 / Math.PI);
}
}

关于java - 给定纬度和经度,如何打印两个城市之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com