3

如果我说“嗨”这个词,我试图这样做如果声明给我真实,但它总是给我虚假!有人可以告诉我为什么吗?!这是我的代码:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    if (requestCode ==check && resultCode == RESULT_OK){
        ArrayList<String> results    =data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        lv.setAdapter(new ArrayAdapter <String>(this   ,android.R.layout.simple_list_item_1,results));
        TextView display=(TextView)findViewById (R.id.TOF);

        String what_you_say = lv.getContext().toString();
        if (what_you_say.contentEquals("hi") == true)

            display.setText("True");

        else

            display.setText("false");       
    }
4

3 回答 3

0

what_you_say.equals("hi")应该管用。此外,最好不要在您检查的东西上假设大小写(除非您想要特定情况)。所以你应该做what_you_say.equalsIgnoreCase("hi")

于 2013-02-28T21:09:49.857 回答
0

替换这一行:

 if (what_you_say.contentEquals("hi") == true)

使用另一行:

 if (what_you_say != null && what_you_say.trim().equalsIgnoreCase("hi"))

在这种情况下,您对简单的字符串相等感兴趣,但采取一些额外的预防措施是个好主意:考虑到字符串为空的情况,删除开头和结尾的多余空格并忽略大小写通常会有所帮助。要查看内容平等的区别,请参阅这篇文章

于 2013-02-28T21:11:23.310 回答
0

您应该按如下方式更改您的 if 语句:

if ("hi".equals(what_you_say))

或者

if ("hi".equalsIgnoreCase(what_you_say))

取决于您是否需要检查区分大小写。

您应该始终以这种方式进行字符串比较,因为它将是空值安全的。

采取以下代码片段:

if ("hi".equals(what_you_say)) // what_you_say is null will evaluate to false

if (what_you_say.equals("hi")) // what_you_say is null will cause NullPointerException

最好 if 语句将评估为 false 而不是导致NullPointerException.

于 2013-02-28T21:12:32.587 回答