Не удается присвоить значение в массиве Java 2D - ArrayIndexoutOfBoundSexception

StackOverflow https://stackoverflow.com/questions/5303530

Вопрос

У меня проблемы с присвоением значения моему 2D массиву в Java. Последняя строка кода, theGrid[rowLoop][colLoop] = 'x';, бросает ArrayIndexOutOfBoundsException ошибка. Может ли кто -нибудь объяснить, почему это происходит?

Это мой код ...

public class Main {
    public static char[][] theGrid;

    public static void main(String[] args) {
        createAndFillGrid(10,10);
    }

    public static void createAndFillGrid(int rows, int cols) {
        theGrid = new char[rows][cols];
        int rowLoop = 0;

        for (rowLoop = 0; rowLoop <= theGrid.length; rowLoop++) {
            int colLoop = 0;

            for (colLoop = 0; colLoop <= theGrid[0].length; colLoop++) {
                theGrid[rowLoop][colLoop] = 'x';
            }
        }
    }
}
Это было полезно?

Решение

Вот проблема rowLoop <= theGrid.length а также colLoop <= theGrid[0].length. Анкет Так должно быть:

rowLoop < theGrid.length

а также

colLoop < theGrid[0].length

Причина ошибки в том, что ваш индекс поднимается до длины массива. Таким образом, если длина была 10, вы поднимаетесь до индекса 10. Это не является действительным индексом в массиве. Массивы имеют допустимые индексы от 0 к length - 1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top