字符串比较未按预期工作。我想比较两个字符串值,但比较似乎总是给出一个真实的结果

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 语句的末尾。对不起!愚蠢的!

【讨论】:

以上是关于字符串比较未按预期工作。我想比较两个字符串值,但比较似乎总是给出一个真实的结果的主要内容,如果未能解决你的问题,请参考以下文章

std::find 条件语句未按预期工作

具有比较器的优先级队列未按预期工作

Array_Intersect 未按预期工作

Symfony 2 树枝拆分功能未按预期工作

猫鼬发现或条件未按预期工作

C中的电源功能未按预期工作