我试图接受一个坐标字符串,并将它们转换为一个整数数组数组,如下所示:
myLine (字符串):
1-2 9-5 4-5 3-6 5-9期望产出:
[[1,2],[9,5],[4,5],[3,6],[5,9]]到目前为止,我已经将字符串拆分为空格,以隔离每个坐标:
result = new int[5][2];
String[] temp_split = myLine.split(" ");这给了我各个数组中的每个坐标,但我不确定如何提取每个整数元素并将其放置在数组中
我目前所处的地方:
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]);
}
}这甚至不能让我接近我想要的结果。
发布于 2021-03-15 17:15:14
你走在正确的轨道上。然而,你似乎一次做了太多的事情。我建议一步一步地去做。因此,首先,我们需要将String分解成协调的对:
String[] split1 = input.split(" ");然后我们可以循环遍历该数组并拆分每个项:
String[] split2 = split1[i].split("-");最后,您可以获得您的结果:
result[i][0] = Integer.parseInt(split2[0]);
result[i][1] = Integer.parseInt(split2[1]);最后的解决方案应该是这样的:
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]);
}或者,如果您想要更短的内容,您可以同时使用空格和-字符,然后执行如下操作:
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]);
}然而,对于这个用例来说,这可能太复杂了。
发布于 2021-03-15 18:08:03
这是使用流的完美情况。
-上,转换为intF 210
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));打印
[[1, 2], [9, 5], [4, 5], [3, 6], [5, 9]]发布于 2021-03-15 17:13:56
像这样
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])
} https://stackoverflow.com/questions/66642424
复制相似问题