Было бы полезно узнать, по какой линии вы бросаете indexOutOfBoundsException
. Из : 3
в конце исключения мы можем знать, что где-то в вашем коде someArr[3]
ссылается на массив, несмотря на someArr.length < 4
.
Ваше условие завершения для вложенного l oop в fillGrid
есть некоторые проблемы:
for (int r = 0; grids.length < 3; r++)
/* Loop never enters, because grids.lengh = 3 */
{
for(int c = 0; grids[r].length < 3; c++)
/* Loop also never enters, because grids[r].length = 3 */
{
grids[r][c] = 0;
}
}
Я думаю, вы хотите иметь:
for (int r = 0; r < grids.length; r++)
{
for(int c = 0; c < grids[r].length; c++)
{
grids[r][c] = 0;
}
}
Я также предлагаю заменить ваш l oop в computerTurn
на операторы завершения, такие как таким образом, метод поддерживает массивы любой длины.
Что касается вашего исключения, после того, как вы обнаружите, где оно происходит, попробуйте распечатать длину массива, к которому вы пытаетесь получить доступ, и распечатать индекс, который Вы пытаетесь получить доступ. Таким образом, вы можете перейти к отладке, почему значение неверно.