0

私は事実上次のようなコードを持っています:

String a;
String b;
a = get_string_from_complex_procedure_1();
b = get_string_from_complex_procedure_2();
if (a != b)
{
    put_up_error_dialog("["+a+"] != ["+b+"]");
}

コードは、aとb同じになるように設計されており、実際にはほとんどの場合同じですが、エラーダイアログが表示されることがあります。ただし、紛らわしいのは、ダイアログで報告されたときに2つの文字列が私と同じように見えることです。どんなことがこの問題を引き起こすのだろうか?

4

4 に答える 4

5

次のように書き換えます。

String a;
String b;
a = get_string_from_complex_procedure_1();
b = get_string_from_complex_procedure_2();
if (!a.equals(b))
{
    put_up_error_dialog("["+a+"] != ["+b+"]");
}

==and演算子は!=、値ではなく参照を比較します。

于 2012-09-07T09:52:10.477 に答える
1

==文字列にはandを使用できません!=。2 つの文字列を比較するにはa.equals(b) and !a.equals(b)

于 2012-09-07T09:52:42.340 に答える
0

Stringを使用する場合、==または!=String の場合は参照 (メモリの場所) を比較するため、equals()メソッドを使用することをお勧めします。

于 2012-09-07T09:53:38.237 に答える
0

使用する

       a.equals(b); or  a.equalsIgnoreCase(b) to compare String. 
于 2012-09-07T09:54:56.240 に答える