2

if で文字列値をチェックしようとしていますが、常に else を入力しています。何が問題なのですか? ありがとうございました

public void alertBtn(View v){
    EditText text = (EditText)findViewById(R.id.editText1);
    String value = text.getText().toString();
    String password="asd";
    if (value==password){

            new AlertDialog.Builder(this)
            .setTitle("Success")
            .setMessage("Correct Password")
            .setNeutralButton("OK", null)
            .show();
        }
    else
        new AlertDialog.Builder(this)
        .setTitle("Error")
        .setMessage("Wrong password")
        .setNeutralButton("OK", null)
        .show();



}
4

4 に答える 4

2

==演算子を使用すると、参照が文字列自体ではなく文字列と比較されます。

String value = text.getText().toString();
String password="asd";

if (value.equals(password))
{
}
于 2013-10-13T08:54:17.663 に答える
1

.equalsorを使用.equalsIgnoreCase()して文字列を比較する

Javaの==とequals()の違いは何ですか?

 if (value.equals(password)){

また、editText の初期化を に移動しますonCreate。ボタンをクリックするたびに編集テキストを初期化する必要はありません

  text = (EditText)findViewById(R.id.editText1); // in onCreate

EditText textクラスメンバーとして宣言する

于 2013-10-13T08:51:09.263 に答える
1

equals() 関数を使用する

試す

if( value.equals(password) ) {

}
于 2013-10-13T08:52:19.477 に答える
0

ここを見て

演算子ではなく、関数を使用しString.equals(String other)て文字列を比較します==

関数は文字列の実際の内容をチェックし、==演算子はオブジェクトへの参照が等しいかどうかをチェックします。文字列定数は通常、同じ値を持つ 2 つの定数を実際に と比較できるように「インターン」されますが==、それに依存しない方がよいことに注意してください。

于 2013-10-13T09:05:40.270 に答える