字符串比较未按预期工作。我想比较两个字符串值,但比较似乎总是给出一个真实的结果
Posted
技术标签:
【中文标题】字符串比较未按预期工作。我想比较两个字符串值,但比较似乎总是给出一个真实的结果【英文标题】: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 条件总是被执行! 【参考方案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 语句的末尾。对不起!愚蠢的!
【讨论】:
以上是关于字符串比较未按预期工作。我想比较两个字符串值,但比较似乎总是给出一个真实的结果的主要内容,如果未能解决你的问题,请参考以下文章