Math.sqrt
第一个if语句应该从compareTo返回一个正数。我已经调试并确认它确实返回一个正数,但它没有进入该区块。
我正在比较像这些“str1”“str2”的字符串...等。它工作正常,直到我到“str10”并且必须将它与“str9”进行比较。它说“str10”小于“str9”是否有意义?
每10次迭代就会发生一次。所以我的数组看起来像[str0,str1,str10 ... str19,str2,str20,str21,... str29..etc]
答案 0 :(得分:2)
考虑使用compareTo(String anotherString)时如何比较string
值。
按字典顺序比较两个字符串。比较是基于 字符串中每个字符的Unicode值。字符序列 由此String对象表示,按字典顺序进行比较 由参数字符串表示的字符序列。结果是 如果此String对象按字典顺序排在前面,则为负整数 参数字符串。如果是这个String,结果是一个正整数 对象按字典顺序跟随参数字符串。结果是 如果字符串相等则为零; compareTo正好返回0 equals(Object)方法将返回true。
正如您所看到的那样,当"str10"
与"str9"
进行比较时,'1'
中的"str10"
的Unicode值小于'9'
的Unicode值} "str9"
这就是为什么你得到的结果"str10"
不大于"str9"
。
您可以将Alphanum算法作为替代方案。
答案 1 :(得分:0)
您似乎在比较每个String
的词典形式,这意味着str10将被放置在str9之前。你需要实现一个使用Alphanum算法的自定义比较器,如here所示。