【问题标题】:String comparison not working as intended. I want to compare two String values but the comparison always seems to give a true result字符串比较未按预期工作。我想比较两个字符串值,但比较似乎总是给出一个真实的结果
【发布时间】:2012-10-06 05:32:20
【问题描述】:

我正在从我的数据库中获取列值(工作正常),然后在循环时将这些值一次放入“字符串 X”中。在同一个循环中,我想将用户通过 UI 提供给我的值与 X 进行比较,并基于此比较,我希望 x 为真或假。但 x 总是显示为真!这是我的代码:

   private boolean fillData() {
       Cursor c = DBHelper.fetchAllIDs();
       // List<String> idList = new ArrayList<String>();
       if (c.moveToFirst()) {
        do {
            String X = (c.getString(c.getColumnIndexOrThrow("IDno")));
            Toast.makeText(getApplicationContext(), "" +X, Toast.LENGTH_LONG).show();
            String B = null; 
            B = Idno.getText().toString();
            if (B.equals(X));
            {
                Toast.makeText(getApplicationContext(), "If condition true"+B, Toast.LENGTH_LONG).show();
                x=true;
            }
        } while (c.moveToNext());


       }
    return x;
  }

【问题讨论】:

  • 我认为你设置的 x 的默认值为 true
  • 不,我一开始就声明 x 为假。
  • 将 x 声明为局部变量,如果它是全局变量,它将保留其先前的值。在 x = true 之后也会中断。
  • 试过了,但 x 仍然显示为真! if 条件总是被执行!

标签: java android string android-sqlite


【解决方案1】:

尝试打印的值

String X = (c.getString(c.getColumnIndexOrThrow("IDno")));

如 Sop(x) 或内部日志。

以同样的方式打印值

 B = Idno.getText().toString();

Sop(B) 或内部日志(B)。

可能两者含义相同但现在不同(区分大小写)。

使用

if(B.equalsIgnoreCase(X))
{
}

而不是if (B.equals(X));

不要将condition termination symbol; 放在if 语句的末尾。

【讨论】:

  • 谢谢你,伙计,感谢休息,我明白了; auselen 的陈述理念
【解决方案2】:

我得到了这个伙计们,我错误地放了一个';'在我的 if 语句的末尾。对不起!愚蠢的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多