我正在尝试制作一个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);
}}
答案 0 :(得分: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
。 (代码已编辑)