首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >纬度和经度的Java字符串分割问题

纬度和经度的Java字符串分割问题
EN

Stack Overflow用户
提问于 2015-11-09 02:50:15
回答 4查看 949关注 0票数 2

我正在为类LatLong编写一个构造函数,它应该接受字符串表示形式,如"3430E 5256N",并将其转换为两个双精度数字,纬度和经度。

我该怎么做呢?

到目前为止,我写了这段代码,但不知道如何在拆分时删除E和N:

代码语言:javascript
运行
复制
public LatLong(String latlong) { 
    String[] parts = latlong.split(" ");
    String latitude = parts[0];
    String longitude = parts[1];
}

此外,如果用户输入34.5,它将需要34并乘以0.5*60才能得到分钟数30,它看起来像3430,根据数字,它应该确定它是什么基数-北,南,东,还是西。

EN

回答 4

Stack Overflow用户

发布于 2015-11-09 02:54:42

使用substring

代码语言:javascript
运行
复制
String latitude = parts[0].substring(0,4);
String longitude = parts[1].substring(0,4); 
票数 1
EN

Stack Overflow用户

发布于 2015-11-09 03:00:27

您可以简单地使用Scanner从输入字符串中检索双精度值。

代码语言:javascript
运行
复制
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字母是纬度和经度定义的一部分。不管你的问题是什么,我相信你最终也应该拯救他们。

票数 0
EN

Stack Overflow用户

发布于 2015-11-09 03:10:19

要删除字符串的任何最后一个字母,可以使用以下命令:

代码语言:javascript
运行
复制
String latitude = parts[0].substring(0,parts[0].length()-1); 
String longitude = parts[1].substring(0,parts[1].length()-1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33597681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档