【问题标题】:i don't understand why string comparison is returning false even when the strings are equal我不明白为什么即使字符串相等,字符串比较也会返回 false
【发布时间】:2014-10-25 17:46:14
【问题描述】:
s = ans.getText().toString();

jum.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
        String selected = jum.getItemAtPosition(arg2).toString();
        if(s.equals(selected))
        {
            //jum.setItemChecked(arg2, true);
            ans.setText("correct");
        }
        else
        {
            ans.setText("incorrect");
        }

    }
});

这里ans 是一个EditText,jum 是一个列表视图。我正在尝试将用户在edittext中输入的字符串与他单击的列表视图中的项目字符串进行比较。

【问题讨论】:

  • “我不明白为什么即使字符串相等,字符串比较也会返回 false”不是。所以你需要问自己的问题是:字符串有什么不同,在某种程度上我无法立即看到? select isn't broken
  • 尝试同时记录 sselected 以真正查看它们包含的值。
  • 另请记住,字符串有时可能包含您看不到的字符。对你来说可能不是这样,但我经常发现自己将“test”与“test\n”或类似的东西进行比较。当心这些情况!
  • 例如,我想引用列表视图有 3 项猫、狗、狮子。在edittext中,我输入了cat,然后单击了列表中的第一项(即cat)。现在预期的答案应该是正确的,但它打印不正确
  • 把这个Log.e(s, selected); 放入onItemClick(...) 并检查你得到了什么值。

标签: java android string-comparison


【解决方案1】:
jum.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            String selected = jum.getItemAtPosition(arg2).toString();
            s= ans.getText().toString();

            if(s.equals(selected))
            {
                //jum.setItemChecked(arg2, true);
                ans.setText("correct");
            }
            else
            {
                ans.setText("incorrect");
            }

        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多