2

重複の可能性:
Java で文字列を比較するにはどうすればよいですか?

私はこのコードを持っています:

    System.out.println(staff.getEmail().length());
    System.out.println(staff.getEmailList());
    if ((staff.getEmail().length() > 0) && (staff.getEmailList() == "Y")) {
        System.out.println(staff.getEmail());

これは私のEclipseコンソールの出力です:

12
Y

私の問題は、if ステートメントの両方の条件が満たされていても、プログラムが上記のコードの最後の行 (System.out.println(staff.getEmail())) に到達できないことです。私もエラーはありません。

何が間違っていたのでしょうか?ありがとう :)

4

3 に答える 3

7

String.equals()Java での文字列の等価性には、演算子 == ではなく、使用する必要があります。

staff.getEmailList() == "Y"に変換する必要があります"Y".equals(staff.getEmailList())

その理由は、身元operator==のチェックです。2 つのオペランドが同じオブジェクトである (同じオブジェクトを参照している) 場合、whileは等しいかどうかをチェックします- 2 つのオペランドが互いに等しいかどうか。equals()

于 2012-12-13T13:07:17.747 に答える
0

ここでは、実際の文字列値ではなく、それらの参照(C言語のポインター)を比較します。

(staff.getEmailList() == "Y")

あなたはこれをするべきです

(staff.getEmailList().equals("Y"))
于 2012-12-13T13:10:53.473 に答える
0

比較を行うときはstaff.getEmailList() == "Y"、2つの文字列がString同じ値であるかどうかではなく、同じインスタンスであるかどうかを尋ねています。staff.getEmailList().equals("Y")代わりにすべきです。

于 2012-12-13T13:11:25.237 に答える