Java 简单if-else语句不起作用
我有一个简单的密码保护。我是这样做的:Java 简单if-else语句不起作用,java,android,if-statement,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(); } el
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();
}
我有编辑文本和按钮。若用户输入“a”,则toast应表示成功。但它总是说失败。我不明白我的代码中有什么错误…您需要使用equals方法。不用于比较字符串。所以,你应该这样做-
if( Password.equals("a") )
{
// ....
}
试试这个:
if(Password.equals("a"))
{
...
}
在Java中,对非基元表达式使用
==
将始终比较对象引用。您询问的是Password
是否引用了与字符串文字“a”完全相同的对象
使用以下任一选项:
if (Password.equals("a"))
或
这些将调用String.equals(Object)
override,它确定两个引用是否引用相等的字符串对象,即相同的字符逻辑序列
如果Password
为null,则前者将抛出异常;后者不会。不要将此视为始终使用后一种形式的建议-如果Password
不应为null,则异常可能比在意外状态下继续要好
我还鼓励您与变量名保持一致-通常局部变量是camelCased,因此您可以使用
密码
,而不是密码
,==
进行引用检查,即检查两个字符串在内存中是否是物理上相同的对象。它们可能是(因为Java优化了某些字符串),但您永远不应该依赖于此
equals()
检查字符串是否有意义地相等,即是否具有相同的字符,这是您几乎100%的时间都想要的。在Java中
Object comparison --> x.equals(y)
reference comparison --> x == y
谢谢你详细的回答!少喝酒,你会有不同的朋友只是开玩笑,但你可能想重温一下差异。我建议你略读一下,因为你已经知道如何编程了,你只需要学习语言。谢谢,谢谢大家。。。谢谢你的好意,没有嘲笑我。我尽力而为!!!
Object comparison --> x.equals(y)
reference comparison --> x == y