简单的if else语句不起作用

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.


Mah*_*esh 5

您需要使用equals方法。不==用于字符串比较。因此,您应该-

if( Password.equals("a") )
{
    // ....
}    
Run Code Online (Sandbox Code Playgroud)

字符串::等于参考