首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >坐标字符串到数组

坐标字符串到数组
EN

Stack Overflow用户
提问于 2021-03-15 17:05:21
回答 3查看 181关注 0票数 1

我试图接受一个坐标字符串,并将它们转换为一个整数数组数组,如下所示:

myLine (字符串):

代码语言:javascript
运行
复制
1-2 9-5 4-5 3-6 5-9

期望产出:

代码语言:javascript
运行
复制
[[1,2],[9,5],[4,5],[3,6],[5,9]]

到目前为止,我已经将字符串拆分为空格,以隔离每个坐标:

代码语言:javascript
运行
复制
result = new int[5][2];    
String[] temp_split = myLine.split(" ");

这给了我各个数组中的每个坐标,但我不确定如何提取每个整数元素并将其放置在数组中

我目前所处的地方:

代码语言:javascript
运行
复制
for (int i = 0; i < result.length; i++) {
    for (int j = 0; j < result[1].length; j++) {
        result[i][j] = Integer.parseInt(temp_split[i][j]);
            }
        }

这甚至不能让我接近我想要的结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-15 17:15:14

你走在正确的轨道上。然而,你似乎一次做了太多的事情。我建议一步一步地去做。因此,首先,我们需要将String分解成协调的对:

代码语言:javascript
运行
复制
String[] split1 = input.split(" ");

然后我们可以循环遍历该数组并拆分每个项:

代码语言:javascript
运行
复制
String[] split2 = split1[i].split("-");

最后,您可以获得您的结果:

代码语言:javascript
运行
复制
result[i][0] = Integer.parseInt(split2[0]);
result[i][1] = Integer.parseInt(split2[1]);

最后的解决方案应该是这样的:

代码语言:javascript
运行
复制
String[] split1 = input.split(" ");

for (int i = 0; i < split1.length; i++) {

    String[] split2 = split1[i].split("-");

    result[i][0] = Integer.parseInt(split2[0]);
    result[i][1] = Integer.parseInt(split2[1]);
}

或者,如果您想要更短的内容,您可以同时使用空格和-字符,然后执行如下操作:

代码语言:javascript
运行
复制
String[] split = input.split("[ |-]");
for (int i = 0; i < split.length; i+=2) {

    result[i / 2][0] = Integer.parseInt(split[i]);
    result[i / 2][1] = Integer.parseInt(split[i + 1]);
}

然而,对于这个用例来说,这可能太复杂了。

票数 2
EN

Stack Overflow用户

发布于 2021-03-15 18:08:03

这是使用流的完美情况。

  • 在一个或多个空格上拆分,
  • 将其中的每一对拆分到-上,转换为int
  • ,返回每对
  • 的数组,并作为数组返回所有对。

F 210

代码语言:javascript
运行
复制
String s = "1-2 9-5 4-5 3-6 5-9";

int[][] pairs = Arrays.stream(s.split("\\s+"))
        .map(pair -> Arrays.stream(pair.split("-"))
                .mapToInt(Integer::parseInt).toArray())
        .toArray(int[][]::new);

System.out.println(Arrays.deepToString(pairs));

打印

代码语言:javascript
运行
复制
[[1, 2], [9, 5], [4, 5], [3, 6], [5, 9]]
票数 1
EN

Stack Overflow用户

发布于 2021-03-15 17:13:56

像这样

代码语言:javascript
运行
复制
String[] temp_split = myLine.split(" ");
int [][] result = new int[temp_split.length][2];
for (int i = 0; i < result.length; i++) {
  String[] temp_split2 = myLine.split("-");
  result[i][0] = Integer.parseInt(temp_split2[0])
  result[i][1] = Integer.parseInt(temp_split2[1])
}  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66642424

复制
相关文章

相似问题

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