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
、if-statement
を実行することはありません。これは 内で行われることにも言及するthread
必要がありますが、問題は発生しませんか?