【发布时间】:2013-12-17 03:36:17
【问题描述】:
需要帮助的家伙。我在代码中添加了随机方法,现在出现此错误。
12-17 11:03:38.921: E/AndroidRuntime(306): FATAL EXCEPTION: main
12-17 11:03:38.921: E/AndroidRuntime(306): java.lang.ArrayIndexOutOfBoundsException
12-17 11:03:38.921: E/AndroidRuntime(306): at com.example.boardrace.MainActivity.isCorrect(MainActivity.java:97)
12-17 11:03:38.921: E/AndroidRuntime(306): at com.example.boardrace.MainActivity.checkAnswer(MainActivity.java:107)
12-17 11:03:38.921: E/AndroidRuntime(306): at com.example.boardrace.MainActivity$1.onClick(MainActivity.java:48)
12-17 11:03:38.921: E/AndroidRuntime(306): at android.view.View.performClick(View.java:2408)
12-17 11:03:38.921: E/AndroidRuntime(306): at android.view.View$PerformClick.run(View.java:8816)
12-17 11:03:38.921: E/AndroidRuntime(306): at android.os.Handler.handleCallback(Handler.java:587)
12-17 11:03:38.921: E/AndroidRuntime(306): at android.os.Handler.dispatchMessage(Handler.java:92)
12-17 11:03:38.921: E/AndroidRuntime(306): at android.os.Looper.loop(Looper.java:123)
12-17 11:03:38.921: E/AndroidRuntime(306): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-17 11:03:38.921: E/AndroidRuntime(306): at java.lang.reflect.Method.invokeNative(Native Method)
12-17 11:03:38.921: E/AndroidRuntime(306): at java.lang.reflect.Method.invoke(Method.java:521)
12-17 11:03:38.921: E/AndroidRuntime(306): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-17 11:03:38.921: E/AndroidRuntime(306): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-17 11:03:38.921: E/AndroidRuntime(306): at dalvik.system.NativeStart.main(Native Method)
这是我在 youtube 上看到的全部代码
public class MainActivity extends Activity {
private int currentQuestion;
private String [] questions;
private String [] answers;
private Button answerButton;
private Button questionButton;
private TextView questionView;
private TextView answerView;
private EditText answerText;
Random random = new Random();
String randString = questions[random.nextInt(questions.length)];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init()
{questions = new String[]{"Q1?","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"};
answers = new String[]{"A1","A2","A3","A4","A5","A6","A7","A8","A9","10",};
currentQuestion = -1;
answerButton = (Button)findViewById(R.id.AnswerButton);
questionButton = (Button)findViewById(R.id.QuestionButton);
questionView = (TextView) findViewById(R.id.QuestionTextView);
answerView = (TextView) findViewById(R.id.AnswerTextView);
answerText = (EditText) findViewById(R.id.AnswerText);
answerButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {checkAnswer(); }});
questionButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
showQuestion();
}});
}
public void showQuestion()
{ currentQuestion++;
if(currentQuestion == questions.length)
currentQuestion =0;
questionView.setText(questions[currentQuestion]);
answerView.setText("");
answerText.setText("");
}
public boolean isCorrect(String answer)
{return (answer.equalsIgnoreCase(answers[currentQuestion]));
}
public void checkAnswer()
{String answer = answerText.getText().toString();
if(isCorrect(answer))
answerView.setText("You're right!");
else answerView.setText("Sorry, the correct answer is "+answers[currentQuestion]);
}
}
代码是关于问题的随机化,您将输入正确的答案。
【问题讨论】:
-
MainActivity.java 中的第 97 行是什么?
-
在你的字符串中 randString = questions[random.nextInt(questions.length)];行 random.nextInt(questions.length) 正在产生一个大于数组大小的数字 - 1. 修复它并且不会出现该错误。
-
贴
isCorrect方法代码 -
这个字符串 randString = questions[random.nextInt(questions.length)];在 init() 中声明问题之前声明。可以吗?
-
请发
isCorrect方法。那是一个抛出异常。也不要在评论中发布它,edit并更新您的问题。谢谢!
标签: android arrays string indexoutofboundsexception