Android如果语句不起作用

时间:2013-11-07 12:01:41

标签: java android if-statement

我目前正在开发一款应用,要求用户输入密码才能访问游戏。我有以下if语句,但它不起作用,你可以从if语句中看到我尝试了三种不同的方法来使匹配等于true。

    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 个答案:

答案 0 :(得分:2)

尝试Password.toString().equals(actualPass.toString())

答案 1 :(得分:2)

使用.equals()代替==来检查一个String个对象是否与另一个==对象相同。如果两个引用引用同一个对象,则true返回.equals(),而如果两个字符串的内容相同,则true返回{{1}}。

答案 2 :(得分:2)

您无法使用CharSequenceequal()与字符串进行比较。因此,请使用此<{p}}将CharSequence更改为字符串

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

答案 3 :(得分: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);

    }