7

重複の可能性:
JavaString.equals対==

私はそれがばかげた質問であることを知っていますが、なぜこのコードが機能しないのですか。

boolean correct = "SampleText"  == ((EditText)findViewById(R.id.editText1)).getText().toString();
    if(correct) ((TextView)findViewById(R.id.textView1)).setText("correct!");
    else ((TextView)findViewById(R.id.textView1)).setText("uncorrect!");  

ポイントは、「editText1」の内容が「SampleText」と等しいかどうかを確認することです。

4

5 に答える 5

26

equals()Javaでは、2つの文字列(および一般に2つのオブジェクト)は、ではなく、を使用して比較する必要があります====オペレーターは同一性をテストしますつまり、2つのオブジェクトがメモリ内で完全に同じであるかどうかをテストします)が、メソッドequals()は、 2つの異なるオブジェクトであるかどうかに関係なく、 2つのオブジェクトが等しいかどうかをテストします(つまり、2つのオブジェクトが同じであるかどうかをテストします)。 。ほとんどの場合、アイデンティティではなく平等に関心があります。

コードを修正するには、次のようにします。

String str = ((EditText)findViewById(R.id.editText1)).getText().toString();
boolean correct = "SampleText".equals(str);

また、への呼び出しで文字列リテラルを最初に配置するequals()ことをお勧めします。これにより、2番目の文字列がである場合に安全になりnull、可能性を回避できNullPointerExceptionます。

于 2012-06-17T16:28:20.490 に答える
1

Javaでは、それらのメソッドStringsと比較する必要があります。equals()

String foo = "foo";
String bar = "bar";
if (foo.equals(bar)) System.out.println("correct");
else System.out.println("incorrect");
于 2012-06-17T16:31:19.180 に答える
1

2つの文字列の値を比較するには(等しい場合)、==ではなくequalsを使用する必要があります(大文字と小文字の区別を気にしない場合はequalsIgnoreCaseを使用します)。
equalsを使用すると、文字列の内容/値がチェックされます(2つの変数が同じオブジェクトを指しているかどうかのみをチェックする「==」とは対照的です。同じ値ではありません)。

于 2012-06-17T16:37:28.283 に答える
1

Javaで2つのオブジェクトを比較する正しい方法は、次を使用することです。Stringはequals() method of Object class Javaのオブジェクトであるため、同じ方法で比較する必要があります。

文字列を比較する正しい方法は、、

s1.equals(s2)

だからあなたはこれを使うことができます、

boolean correct = "SampleText".equals(((EditText)findViewById(R.id.editText1)).getText().toString());

于 2012-06-17T17:28:06.843 に答える
0
((TextView)findViewById(R.id.textView1)).setText("SampleTest".equals(((EditText)findViewById(R.id.editText1)).getText().toString()) ? "correct!" : "incorrect!");

それは少し長いです、そしておそらくあなたがこれをすることができるより良い方法があります。.toString()は奇妙に感じます!

于 2012-06-17T16:33:43.260 に答える