谁能告诉我为什么这个if语句总是给我假的?

时间:2013-02-28 21:06:55

标签: java android string if-statement equals

如果我说“hi”这个词,我试图这样做,如果声明给我真实,但它给了我错误的时间!有人可以告诉我为什么?! 这是我的代码:

    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");       
    }

3 个答案:

答案 0 :(得分:0)

what_you_say.equals("hi")应该有效。另外,最好不要在你检查的东西上假设套管(除非你想要特定的情况)。所以你应该做what_you_say.equalsIgnoreCase("hi")

答案 1 :(得分:0)

替换此行:

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

使用另一行:

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

在这种情况下,您对简单的字符串相等感兴趣,但最好采取一些额外的预防措施:考虑字符串为null的情况,在开头和结尾删除多余的空格,并忽略大小写通常救命。要查看内容平等的差异,请参阅此post

答案 2 :(得分: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