我正在为类LatLong
编写一个构造函数,它应该接受字符串表示形式,如"3430E 5256N"
,并将其转换为两个双精度数字,纬度和经度。
我该怎么做呢?
到目前为止,我写了这段代码,但不知道如何在拆分时删除E和N:
public LatLong(String latlong) {
String[] parts = latlong.split(" ");
String latitude = parts[0];
String longitude = parts[1];
}
此外,如果用户输入34.5,它将需要34并乘以0.5*60
才能得到分钟数30
,它看起来像3430
,根据数字,它应该确定它是什么基数-北,南,东,还是西。
发布于 2015-11-09 02:54:42
使用substring
String latitude = parts[0].substring(0,4);
String longitude = parts[1].substring(0,4);
发布于 2015-11-09 03:00:27
您可以简单地使用Scanner
从输入字符串中检索双精度值。
Double lat, long;
Scanner scanner = new Scanner(latlong);
scanner.useDelimiter("[^\\d,]");
while (scanner.hasNextDouble() || scanner.hasNext()) {
if (scanner.hasNextDouble()) {
if (lat == null) {
lat = scanner.nextDouble(); // First setting the latitude
} else {
long = scanner.nextDouble(); // Then longitude and stopping
break;
}
} else {
scanner.next();
}
}
scanner.close(); // Edit: forgot the close in original answer
任何其他转换(就像你提到的34.5作为输入)可以在之后轻松地完成,一旦你有了doubles本身。
请注意,E和N字母是纬度和经度定义的一部分。不管你的问题是什么,我相信你最终也应该拯救他们。
发布于 2015-11-09 03:10:19
要删除字符串的任何最后一个字母,可以使用以下命令:
String latitude = parts[0].substring(0,parts[0].length()-1);
String longitude = parts[1].substring(0,parts[1].length()-1);
https://stackoverflow.com/questions/33597681
复制相似问题