0

我正在尝试制作一个Android应用程序

  • 用户说一句话
  • 这个词将被保存到变量中what_you_say
  • 如果它与我已经存储在数组中的内容匹配,用户会说第二个短语

... 等等。问题是,我创建了一个数组并将我希望程序用来比较用户所说的单词的单词存储在其中,但它不起作用!它一直给我虚假,我不知道为什么。这是我的代码:

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

索引从0而不是1开始。你得到一个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循环内询问,并说它等于zero,您的输出将是:

真的,继续

错了,再重复一遍

错了,再重复一遍

我认为您的意思是what_you_say在循环的每次迭代中都要求。(代码已编辑

于 2013-03-05T20:37:03.893 回答