如何解决Java越界编码错误?
我正在尝试使用Java在BlueJ上创建一个Times Tables测验,每次我尝试运行这段代码时,它都会告诉我有一个越界异常,并突出显示带星号的代码行如何解决Java越界编码错误?,java,arrays,indexoutofboundsexception,bluej,Java,Arrays,Indexoutofboundsexception,Bluej,我正在尝试使用Java在BlueJ上创建一个Times Tables测验,每次我尝试运行这段代码时,它都会告诉我有一个越界异常,并突出显示带星号的代码行 public void getQuestion() { boolean newQuestion; Random randomGenerator = new Random(); int randomInt = 0; for (int j=1; j<=12; j++) { newQue
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 + " = ");
}
public void getQuestion()
{
布尔新问题;
Random randomGenerator=新的Random();
int-randomInt=0;
对于(int j=1;j而言,根本原因是增加i
时索引过度,请使用模运算符%
:
i=(i+1) % 12;
顺便说一句,我会使用chosenArray.length
,而不是像12
这样的神奇数字。显示异常跟踪(chosenArray[I]!=randomInt)&(chosenArray[I]!=randomInt)
为什么要检查两次?这可能会导致一个无限循环。但它解决了当前的问题。@Tom是的,这段代码有很多问题,但我并不自愿修复所有问题(也没有人问过)@Tom关于无限循环:如果chosenArray.length
至少为12,则它不是无限循环。@GaborSch它与长度无关。OP有索引自动边界异常
,因为(chosenArray[i]!=randomInt)
保持正确,如果他按照您的建议更改代码,他将反复检查所有12个值。他应该确保他的chosenArray
数组中的值仅在1到12(包括)之间。