1

これは私のコードです:

Log.d("inf", loader);
if (loader == "Klasse"){
    Log.d("inf", "Klasse yes");
    OPTS = new String[] { //Something };
} else {
    Log.d("inf", "Klasse no");
    OPTS = new String[] { //Something };
}

最初の行では、出力は正確に「Klasse」ですが、次の出力は常に「Klasse no」です。ローダー文字列は次のように設定されます。

String loader = "";
Bundle exta = getIntent().getExtras();
    if(exta !=null) {
        try {
            json = new JSONObject(exta.getString("json"));
            loader = exta.getString("order");
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

何が悪いのか、何か考えはありますか?

4

4 に答える 4

11

比較演算子は==、値ではなく参照を比較します。値を比較する必要があるため、equals()メソッドを使用する必要があります。

if (loader.equals("Klasse"))
于 2012-05-13T19:26:18.383 に答える
0

==または===が機能しない場合は、.equalsを使用してください

于 2012-05-13T23:28:14.700 に答える
0

文字列の比較は、常に equals メソッドで行う必要があります。

if(loader.equals("Klasse")) { .... }

これは、String がクラスであり、'==' を使用して、それらが同じオブジェクトであるかどうかをチェックするためです。Equals は、比較している文字列が等しいことを確認します。

于 2012-05-13T19:29:12.540 に答える
0

==同一性 ( ) と同等性 ( )には違いがありequals()ます。オブジェクトポインタが同じかどうかの同一性テストなので、正しいことはほとんどありません。同等性は、オブジェクトの「値」が同じかどうかをテストするため、ほとんどの場合、代わりに必要なものです。

于 2012-05-13T19:27:39.013 に答える