0

私はAndroidアプリケーションを作ろうとしています

  • ユーザーが一言
  • この単語は変数に保存されますwhat_you_say
  • 配列に既に保存されているものと一致する場合、ユーザーは2番目のフレーズを言います

... 等々。問題は、配列を作成し、プログラムにユーザーが言う単語と比較させたい単語を格納しましたが、機能しないことです! それは私に偽りを与え続け、その理由はわかりません。これが私のコードです:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode ==check && resultCode == RESULT_OK){                       // voice to text 

TextView display2=(TextView)findViewById (R.id.TOF);

String[] words = { "zero", "one", "two" };  
for (int w=0;w<3;w++)
{
    ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
     for(int j=0;j<results.size();j++) {

        String what_you_say = results.get(j);  
         if (what_you_say.equalsIgnoreCase(words[w]))
             display2.setText("true, continue dear");
             //System.out.println("true, continue");
         else
         {
             display2.setText("False, repeat again");
           //System.out.println("False, repeat again");
         }
     }
} 
}//end of for
super.onActivityResult(requestCode, resultCode, data);

}}
4

1 に答える 1

3

インデックスは1ではなく0から始まります。ArrayIndexOutOfBoundsExceptionを取得しています。

次のように変更します。

String[] words = { "zero", "one", "two" };  
for (int w=0;w<3;w++)
{
     for(int j=0;j<results.size();j++) {
         what_you_say = results.get(j);  
         if (what_you_say.equalsIgnoreCase(words[w]))
            System.out.println("true, continue");
         else
         {
           System.out.println("False, repeat again");
         }
     }
} 

またwhat_you_say、ループ内で for を要求せず、 に等しいと言うとzero、出力は次のようになります。

本当、続けます

違う、もう一度繰り返す

違う、もう一度繰り返す

what_you_sayループの繰り返しごとに尋ねるつもりだったと思います。(コード編集)

于 2013-03-05T20:37:03.893 に答える