3

「こんにちは」という単語を言うとtrueになるifステートメントを実行しようとしていますが、常にfalseになります!! 誰かが理由を教えてください! ここに私のコードがあります:

    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

次の行を置き換えます。

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

この他の行で:

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

この場合、単純な文字列の等価性に関心がありますが、いくつかの追加の予防措置を講じることをお勧めします。文字列が null の場合を考慮し、先頭と末尾の余分なスペースを削除し、大文字と小文字を区別しないと通常は役立ちます。コンテンツの平等との違いを確認するには、この投稿を参照してください。

于 2013-02-28T21:11:23.310 に答える
0

次のように if ステートメントを変更する必要があります。

if ("hi".equals(what_you_say))

また

if ("hi".equalsIgnoreCase(what_you_say))

チェックで大文字と小文字を区別する必要があるかどうかによって異なります。

null セーフになるため、常にこの方法で文字列比較を行う必要があります。

次のコード スニペットを使用します。

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 ステートメントがNullPointerException.

于 2013-02-28T21:12:32.587 に答える
0

what_you_say.equals("hi")動作するはずです。また、チェックするもので大文字と小文字を区別しないことをお勧めします (大文字と小文字を区別したい場合を除きます)。だからあなたはすべきですwhat_you_say.equalsIgnoreCase("hi")

于 2013-02-28T21:09:49.857 に答える