3 回答
TA贡献1806条经验 获得超8个赞
假设[7,11,10,6,9]是输入,我们可以尝试转换为整数列表,然后对该列表进行排序:
String input = "[7,11,10,6,9]";
input = input.replaceAll("\\[(.*)\\]", "$1");
String[] vals = input.split(",");
List<Integer> output = Arrays.stream(vals)
.map(v -> Integer.parseInt(v))
.collect(Collectors.toList());
Collections.sort(output);
System.out.println(Arrays.toString(output.toArray()));
这打印:
[6, 7, 9, 10, 11]
TA贡献1828条经验 获得超3个赞
您可以replace()一次完成这些行并使用正则表达式更干净地拆分:
parts = line.split("[\\[\\], ]+");
并使用 cameron1024 在他的回答中演示的 Iterable 技术。我认为Iterable对于此用例,using 是比 using 更好的选择Streams,因为输入大小非常小并且Streams必须花费更多时间来启动。
整个事情看起来像:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] parts;
List<String> linhas = new ArrayList<>();
for (int i = 0; i < 3; i++) {
String line = br.readLine();
parts = line.split("[\\[\\] ,]+");
}
int ints[] = new int[parts.length];
for(int i = 0; i < parts.length; i++){
ints[i] = Integer.parseInt(parts[i]);
}
Arrays.sort(ints);
TA贡献1813条经验 获得超2个赞
一旦你有了,parts你必须把它转换String[]成一个int[]. 为此,首先为要输入的结果创建一个 int[]。它必须与您的大小相同String[]:
int[] ints = new int[parts.length];
然后,遍历String[]并在 中填充值int[]:
for (int i = 0; i < parts.length; i++) {
ints[i] = Integer.parseInt(parts[i]); // converts a string containing an integer into its int value
}
最后,要对每一行进行排序,只需调用 即可对Arrays.sort(ints);整数数组进行排序。
奖金:
这可以使用 Java 8 Streams 在一行中更干净地实现,如下所示:
List<Integer> sortedInts = Arrays.stream(parts).map(Integer::parseInt).sorted().collect(Collectors.toList());
添加回答
举报