3 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
假設(shè)[7,11,10,6,9]是輸入,我們可以嘗試轉(zhuǎn)換為整數(shù)列表,然后對該列表進(jìn)行排序:
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()));
這打?。?/p>
[6, 7, 9, 10, 11]

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以replace()一次完成這些行并使用正則表達(dá)式更干凈地拆分:
parts = line.split("[\\[\\], ]+");
并使用 cameron1024 在他的回答中演示的 Iterable 技術(shù)。我認(rèn)為Iterable對于此用例,using 是比 using 更好的選擇Streams,因?yàn)檩斎氪笮》浅P〔⑶襍treams必須花費(fèi)更多時(shí)間來啟動。
整個(gè)事情看起來像:
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貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
一旦你有了,parts你必須把它轉(zhuǎn)換String[]成一個(gè)int[]. 為此,首先為要輸入的結(jié)果創(chuàng)建一個(gè) 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
}
最后,要對每一行進(jìn)行排序,只需調(diào)用 即可對Arrays.sort(ints);整數(shù)數(shù)組進(jìn)行排序。
獎金:
這可以使用 Java 8 Streams 在一行中更干凈地實(shí)現(xiàn),如下所示:
List<Integer> sortedInts = Arrays.stream(parts).map(Integer::parseInt).sorted().collect(Collectors.toList());
添加回答
舉報(bào)