我目前正在开发一款应用,要求用户输入密码才能访问游戏。我有以下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中看到的那样,插入的密码和实际密码是相同的,但程序说它们不是!
答案 0 :(得分:2)
尝试Password.toString().equals(actualPass.toString())
答案 1 :(得分:2)
使用.equals()
代替==
来检查一个String
个对象是否与另一个==
对象相同。如果两个引用引用同一个对象,则true
返回.equals()
,而如果两个字符串的内容相同,则true
返回{{1}}。
答案 2 :(得分:2)
您无法使用CharSequence
将equal()
与字符串进行比较。因此,请使用此<{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);
}