Может кто-нибудь сказать мне, почему это, если заявление всегда дает мне ложь?

Я пытаюсь сделать это, если заявление, чтобы дать мне правду, если я скажу слово "привет", но это дает мне ложь все время!! Может кто-нибудь, пожалуйста, скажите мне, почему? вот мой код:

    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 ответа

Заменить эту строку:

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

С этой другой строкой:

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

В этом случае вас интересует простое равенство строк, но это хорошая идея, чтобы принять некоторые дополнительные меры предосторожности: рассмотрение случая, когда строка имеет значение null, удаление лишних пробелов в начале и конце и игнорирование регистра, как правило, помогут. Чтобы увидеть разницу с равным содержанием, посмотрите этот пост.

what_you_say.equals("hi") должно сработать. Также хорошей практикой является не допускать использования регистра в чем-то, что вы проверяете (если вы не хотите использовать конкретный случай). Так что вы должны сделать what_you_say.equalsIgnoreCase("hi")

Вы должны изменить свой 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,

Другие вопросы по тегам