我有一个名为numb
的数组。它包含5个数字(来自用户的输入)输入值的示例是:5,29,101,100,89.4。我使用for循环将此数组的元素转移到名为TreeSet
的{{1}}中(我按降序排列元素)。在此之后,我使用ts
显示此TreeSet
的元素。但显示屏显示的内容与我的预期不同。它显示MessageDialog
。
当我输入具有相同位置值的数字时 - 例如数十,数百(如果数组只包含12,56,84,74,65之类的数字),它按预期排序。我不知道我做错了什么。
以下是代码:
[89.4,5,29,101,100]
答案 0 :(得分:2)
您将数字转换为字符串,因此不会得到数字的自然顺序,但是“10”小于“2”的字符串的自然顺序,因为第一个字符较小。
将树集的内容更改为Number
或特定的数字类型,如Double
,并将数组元素解析为数字,
例如
使用Double.parseDouble()
,new DecimalFormat().parse()
等。
答案 1 :(得分:0)
比较字符串时,它来自第一个字符。这意味着您需要考虑这样的“数字”。你可以按相反的顺序
-9.9
-1e1
-100
89.4
899.5
5
29
101
100
05
005.0
0059
首先比较第一个字母或数字8> 5> 2> 1.如果是领带,则比较第二个字母,依此类推。注意: '。' > '9'和' - '> '9'
将这些作为数字进行比较的方法是首先将它们转换为数字。