我正在尝试使用Java在BlueJ上创建Times Tables测验,每次我尝试运行此代码时,它都会告诉我有一个超出范围的异常并突出显示已加星标的代码行。
public void getQuestion()
{
boolean newQuestion;
Random randomGenerator = new Random();
int randomInt = 0;
for (int j=1; j<=12; j++)
{
newQuestion=false;
int i=0;
while (newQuestion==false)
{
randomInt = randomGenerator.nextInt(12);
randomInt = randomInt + 1;
while ((chosenArray [i]!=randomInt) && (chosenArray[i]!= randomInt))
{
i=i+1;
***if (chosenArray[i]==0)***
{
newQuestion = true;
chosenArray[i]=randomInt;
}
}
}
}
System.out.print(timesTableChosen + " x " + randomInt + " = ");
}
}
我该如何解决这个问题呢? 感谢。
答案 0 :(得分:0)
根本原因是你在增加i
时过度索引,使用模运算符%
:
i=(i+1) % 12;
BTW,而不是12
之类的幻数,我总是使用chosenArray.length
。