如果声明条件不通过但应该是!? (Java)的

时间:2017-04-19 02:38:36

标签: java if-statement compareto

Math.sqrt

第一个if语句应该从compareTo返回一个正数。我已经调试并确认它确实返回一个正数,但它没有进入该区块。

我正在比较像这些“str1”“str2”的字符串...等。它工作正常,直到我到“str10”并且必须将它与“str9”进行比较。它说“str10”小于“str9”是否有意义?

每10次迭代就会发生一次。所以我的数组看起来像[str0,str1,str10 ... str19,str2,str20,str21,... str29..etc]

2 个答案:

答案 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所示。