Bad*_*ari 2 java android if-statement
我有一个简单的密码保护.我是这样做的:
EditText editText1 = (EditText) findViewById(R.id.editText1);
String Password = editText1.getText().toString();
if(Password == "a"){
Toast.makeText(getApplicationContext(), "Success" + Password, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Failure" + Password, Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
我有edittext和按钮.如果用户输入"a",吐司应该说成功.但它总是说失败.我不明白我的代码有什么问题...
Jon*_*eet 17
在Java中,使用==非原始表达式将始终比较对象引用.你问是否Password引用与字符串文字"a"完全相同的对象.
使用:
if (Password.equals("a"))
Run Code Online (Sandbox Code Playgroud)
要么
if ("a".equals(Password))
Run Code Online (Sandbox Code Playgroud)
这些将调用String.equals(Object)override,它确定两个引用是否引用相等的 String对象 - 即相同的逻辑字符序列.
如果Password为null,前者将抛出异常; 后者不会.不要将此视为始终使用后一种形式的建议 - 如果Password 不应为null,则异常可能比继续处于意外状态更好.
我还鼓励你与你的变量名一致 - 通常局部变量是camelCased,所以你要使用password而不是Password.
您需要使用equals方法。不==用于字符串比较。因此,您应该-
if( Password.equals("a") )
{
// ....
}
Run Code Online (Sandbox Code Playgroud)