所以我试图将我的ArrayList从最大到最小排序。用户只能输入数字,然后将其转换为字符串。这一切都很有效,但是当我显示我的分数时,我会得到类似的东西......
98
81
81
76
64
105
103
100
任何人都知道如何排序...
105
103
100
98
81
81
76
64
答案 0 :(得分:3)
您将数字保持为String
s,因此您按字典顺序对它们进行排序('9'
在'1'
之后)。相反,您应该将字符串解析为Integer
(例如,使用Integer.valueOf
)并存储在ArrayList<Integer>
中。现在,当您对它进行排序时,将根据它们的数值来评估元素。
答案 1 :(得分:2)
Dom - 请记住,字符串是一串字符,每个字符都有一个整数值。排序字符串!==排序数字。
答案 2 :(得分:2)
这是代码
List<String> firstArrayList = new ArrayList<String>();
firstArrayList.add("4"); // .add(readUSerInput());
firstArrayList.add("30");
firstArrayList.add("1");
firstArrayList.add("02");
ArrayList<Integer> newArrayList = new ArrayList<Integer>();
for(String numero: firstArrayList){
newArrayList.add(Integer.parseInt(numero));
}
newArrayList.sort(Collections.reverseOrder());
// To check
for(Integer numero: newArrayList){
// use a Scanner() to print numero to the screen
}