我有在Java中compareTo
方法的問題,這是代碼:CompareTo方法在Java怪怪
for(int i = 0; i < btFolder.size(); i++) {
String g = btFolder.get(i).toString();
String[] subf = g.split(splitchar);
String s = subf[subf.length-1].toUpperCase();
if(s.compareTo(bt.toUpperCase()) == 0) {
return g;
}
}
return null; //not found!
這不會跳進if-statement
,它應該因爲s
和bt
變量是平等的,我知道是因爲我已經完成了作業並進行了調試。只是爲了找出什麼compareTo
方法回報我寫這段代碼:
String g = btFolder.get(i).toString();
String[] subf = g.split(splitchar);
String s = subf[subf.length-1].toUpperCase();
String btUp = bt.toUpperCase();
int theSame = s.compareTo(btUp);
if(theSame == 0) {
putSharedPrefs("pathToBt", g);
}
return null;
變量theSame
是0,這意味着s
和btUp
相等。而且,the if-statement
永遠不會執行!
這是怎麼發生的?有什麼好的解決方案呢?
編輯
我已經試過這太:
boolean equals = s.equalsIgnoreCase(bt);
if(equals) {
return g;
}
的boolean
是true
,但從來沒有excutes的if-statement
,我也應該提到這是一個thread
內完成,但是不應該引起任何問題?
爲什麼不使用'String.equalsIgnoreCase'而不是'compareTo'? – maba
,因爲使用它有點粗略。我希望整個字符串完全相同,順序相同,而不是字符串。這真的不是我爲什麼使用'compareTo'它應該工作的問題。 –
*「變量theSame是0,這意味着s和btUp是相等的,而if語句永遠不會執行!」* =>這是不可能的。發佈一個證明你的問題的[簡短的,自包含的,正確的例子(SSCCE)](http://www.sscce.org/)將幫助你得到更好的答案。 – assylias