1つのチュートリアルで作業しています。配列のインデックスを減少または増加させるメソッドロジックを実装することを決定しました。どういうわけか、それはまだ私の配列の外に出ています。なぜそれが起こっているのですか?updateQuestionTrue/updateQuestionFalseのロジックがエラーを起こす理由を理解できません
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(getApplicationContext(),"You are right!", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
mTextView = (TextView) findViewById(R.id.question_text_view);
mTextView.setText(mQuestionBank[mIndex].getQuestionId());
updateQuestionTrue();
}
});
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(getApplicationContext(),"Nope...", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
mTextView = (TextView) findViewById(R.id.question_text_view);
mTextView.setText(mQuestionBank[mIndex].getQuestionId());
updateQuestionFalse();
}
});
ここで間違ったロジック方法です。あなたは私のことを説明することができます、なぜ私の配列のサイズ外に行くのですか?それはmQuestionBank.length
さもなければ等しくなるときに0からupdateQuestionTrue()
セットmIndex
が、updateQuestionFalse()
がmQuestionBank.length - 1
からmIndex
それはそうでなければこのように0未満であろうときに、それがループ意志を設定する必要が同じよう
private void updateQuestionTrue() {
mIndex++;
if(mIndex == mQuestionBank.length) {
mIndex = 0;
}
}
private int updateQuestionFalse() {
mIndex--;
if(mIndex == 0) {
mQuestionBank[0].getQuestionId();
}
return 0;
}
を試すことができますか?それは 'mIndex'が0より下になるのを止めていません。 – Blorgbeard
mIndex == 0おそらく一度値を減らすのをやめます... –
mIndexが0より下になるのを止めるべきですが、 == 0、それは0で初期化され、最初の質問を配列 –