Java的关系运算符在if-else条件下无法正常工作。 Android编程

时间:2015-09-16 19:31:19

标签: java android

请从按钮的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 ");
      }

帮助请!!!!!!!!!!

1 个答案:

答案 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的基础知识。关于它(等于)在前面的章节中写道。