请从按钮的onClick事件处理程序中检查以下代码段。
if语句即使其TRUE (由于关系运算符==和&&可能)也不会执行...但是在使用字符串方法(.contains())时工作正常如最后所示。
EditText uname = (EditText)findViewById(2);
EditText pwd = (EditText)findViewById(3);
TextView msg = (TextView)findViewById(4);
String a = uname.getText().toString();
String b = pwd.getText().toString();
if(a==("afnan")&& b==("secret")){
msg.setText("abc");
}else {
msg.setText("xyz " + a + b); // concatenated a and b to see their values and they are same as in IF statement so why does ELSE always get executed but not IF?
}
使用以下代码替换关系运算符可以正常工作但如果语句对于“afnanaaaaa”为真,因为它确实包含“afnan”但不包含EXACLTY包含“afnan”:
if(a.contains("afnan")&& b.contains("secret")){
msg.setText("Welcome !!!");
}else if (a!= "afnan" && b!= "secret"){
msg.setText("xyz ");
}
帮助请!!!!!!!!!!
答案 0 :(得分:0)
在这种情况下,您需要了解Java通过引用而不是值进行比较。以下代码显示正确的解决方案:
if(a.equals("afnan")&& b.equals("secret")){
msg.setText("abc");
}else {
msg.setText("xyz " + a + b); // concatenated a and b to see their values and they are same as in IF statement so why does ELSE always get executed but not IF?
}
用于比较的普通对象是使用方法equals()。 (等等a.equals(b))对于数组和某些类需要静态方法。您可能希望借助书籍改进Java的基础知识。关于它(等于)在前面的章节中写道。