android代码中的字符串比较错误

时间:2015-11-22 18:26:53

标签: android string sqlite logic

我正在使用简单的代码来保存和检索Sqlite数据库。我的问题是我的代码总是使用else部分甚至字符串是相同的。 Toast.makeText(getApplicationContext(), "No UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();

而不是 Toast.makeText(getApplicationContext(), "Yes UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();

我用吐司和调试模式检查了输出。 utext的值等于str,ptext的值等于str1。我在这里弄错了吗?我找不到任何东西。

http://postimg.org/image/huvmxhgup/

public void onClick(View v) {
            utext=t1.getText().toString();
            ptext=t2.getText().toString();

            Cursor c = db.rawQuery("SELECT * FROM " + tbl_name+" WHERE USERNAME= '"+utext+"' AND PASSWORD= '"+ptext+"'", null);
              if(c.moveToLast() ) {
                      str=c.getString(c.getColumnIndex("USERNAME"));
                      str1=c.getString(c.getColumnIndex("PASSWORD"));
                      Toast.makeText(getApplicationContext(), "True : "+str+", "+str1, Toast.LENGTH_LONG).show();
              }
              else
                  Toast.makeText(getApplicationContext(), "FALSE", Toast.LENGTH_LONG).show();
              if(str==utext || str1==ptext)
                  Toast.makeText(getApplicationContext(), "Yes UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();
              else
                  Toast.makeText(getApplicationContext(), "No UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();

        }

2 个答案:

答案 0 :(得分:1)

在java中,==比较对象引用而不是内容。

  

==检查两个字符串是否是同一个对象,而   .equals().compareTo()检查两个字符串是否具有   相同的价值。

您可以使用java中的方法.equals().compareTo()来比较字符串

因此,替换

if(str==utext || str1==ptext)

if(str.equals(utext) || str1.equals(ptext))

if(str.compareTo(utext)==0 || str1.compareTo(ptext)==0)

答案 1 :(得分:1)

您应始终使用.equals()进行字符串比较。将您的代码更改为此。

if(str.equals(utext) || str1.equals(ptext))
    Toast.makeText(getApplicationContext(), "Yes UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();
else
    Toast.makeText(getApplicationContext(), "No UName: "+utext+","+str+"; Pswd: "+ptext+","+str1, Toast.LENGTH_LONG).show();