0

compareToJavaのメソッドに問題があります。これはコードです:

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ためです。宿題をしてデバッグしたのでわかります。メソッドが何を返すかを理解するために、次のコードを書きました。sbtcompareTo

        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 です。これは、sbtUpが等しいことを意味します。それでも、the if-statement実行されることはありません!

なぜこうなった?これに対する良い解決策はありますか?

編集

私もこれを試しました:

boolean equals = s.equalsIgnoreCase(bt);

        if(equals) {
            return g; 
        }

booleanですがtrueif-statementを実行することはありません。これは 内で行われることにも言及するthread必要がありますが、問題は発生しませんか?

4

2 に答える 2

2

このスニペットでは

if(theSame == 0) {
       putSharedPrefs("pathToBt", g); 
}

デバッグしてそれを確認できる場合theSameは、 sysout0を配置して、印刷されているかどうかを確認してください。

実行されていない場合はかなり確信しているので、デバッグしているコードと実行されているコードが同じではないようです。これは、ビルドがデプロイされておらず、古い実行可能ファイルを使用して新しいソースをデバッグしているときに、日食で発生することがあります。

于 2012-08-30T11:15:19.420 に答える
0

なぜそうしないのですか?

if (s.equalsIgnoreCase(bt) {
    return g; 
}

私はあなたがcompareToを使うことができると思います、しかしそれは他のこともします...

于 2012-08-30T11:07:16.337 に答える