如何解决Java越界编码错误?

时间:2014-11-03 11:35:03

标签: 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++)
    {
        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 + " = "); 
}

}

我该如何解决这个问题呢? 感谢。

1 个答案:

答案 0 :(得分:0)

根本原因是你在增加i时过度索引,使用模运算符%

i=(i+1) % 12;

BTW,而不是12之类的幻数,我总是使用chosenArray.length