1

現在、ユーザーがゲームにアクセスするためにパスワードを入力する必要があるアプリを開発しています。次のifステートメントがありますが、ifステートメントからわかるように、一致をtrueにするために3つの異なる方法を試しましたが、機能しません。

    EditText passInput = (EditText) findViewById(R.id.passwordBox);
    CharSequence Password = passInput.getText();
    RelativeLayout loggedIn = (RelativeLayout) findViewById(R.id.LoggedInLayout);
    RelativeLayout CreateUser = (RelativeLayout) findViewById(R.id.createUserLayout);
    Button loginBtt = (Button) findViewById(R.id.createUser);
    String actualPass = password[x];

    System.out.println(Password + actualPass + passInput);

    if(Password.equals(actualPass)){

        System.out.println("They Matched!");
        loggedIn.setVisibility(View.VISIBLE);
        CreateUser.setVisibility(View.GONE);
        loginBtt.setText("Create User");

    }else if(Password.toString() == actualPass.toString()){

        System.out.println("Second Match");

    }else if(Password == actualPass){

        System.out.println("Third Match");

    }else if(Password.equals(actualPass) == false){

    System.out.println("Wrong");
    incorrectPassword();
    System.out.println(Password);
    System.out.println(actualPass);

    }

ユーザーが登録すると、パスワードを設定する必要があります。テストのために、パスワード「trst」を試しましたが、ログイン ページに挿入すると、正しくないとして返されます。これは私のLogCatが表示するものです:

11-07 11:46:16.357: I/System.out(1998): Wrong
11-07 11:46:16.547: I/System.out(1998): trst
11-07 11:46:16.547: I/System.out(1998): trst

LogCat からわかるように、挿入されたパスワードと実際のパスワードは同一ですが、プログラムはそうではないと言います!

4

4 に答える 4

3

あるオブジェクトが別のオブジェクトと等しいかどうかをチェックする.equals()代わりに使用します。は、2 つの参照が同じオブジェクトを参照している場合に戻り、2 つの文字列の内容が同一である場合に戻ります。==String==true.equals()true

于 2013-11-07T12:03:41.037 に答える
2

試すPassword.toString().equals(actualPass.toString())

于 2013-11-07T12:03:33.890 に答える
2

CharSequenceを使用して Stringと比較することはできません。したがって、これを使用して String にequal()変更します。CharSequence

String Password = passInput.getText().toString();
于 2013-11-07T12:08:19.650 に答える
1

変化する

 CharSequence Password = passInput.getText();

 String Password = passInput.getText().toString();

それから

if(Password.equalsIgnorecase(actualPass)){

        System.out.println("They Matched!");
        loggedIn.setVisibility(View.VISIBLE);
        CreateUser.setVisibility(View.GONE);
        loginBtt.setText("Create User");

    }else if(Password.equalsIgnorecase(actualPass.toString())){

        System.out.println("Second Match");

    }else if(Password.equalsIgnorecase(actualPass)){

        System.out.println("Third Match");

    }else if(!Password.equalsIgnorecase(actualPass)){

    System.out.println("Wrong");
    incorrectPassword();
    System.out.println(Password);
    System.out.println(actualPass);

    }
于 2013-11-07T12:03:40.020 に答える