println, массив и NullPointerException

Не могу разобраться, почему после запуска программы выдает исключение java.langNullPointerException на метод System.out.println();

public class Mix4TestDrive {
    public static void main (String [] args) {
        int count = 0;
        Mix4 [] m4a = new Mix4[20];
        int x = 0;

        while (x < 9) {
            m4a[x] = new Mix4();
            m4a[x].counter = m4a[x].counter + 1;
            count = count + 1;
            count = count + m4a[x].counter;
            x = x + 1;
        };

        System.out.println(count + " " + m4a[x].counter);
    }
}


public class Mix4 {
    int counter = 0;

    public int maybeNew(int index) {
        if (index < 5) {
            Mix4 m4 = new Mix4();
            m4.counter = m4.counter + 1;
            return 1;
        }
        return 0;
    }
}

Исключение выдает именно на m4a[x].counter.


Ответы (1 шт):

Автор решения: Roman Konoval

Это ожидаемо.

После окончания работы цикла у вас x==9, а в массиве с индексом 9 лежит null так как в цикле были созданы элементы с индексами 0 до 8.

m4a[x] возвращает null и доступ к полю counter генерирует NullPointerException.

→ Ссылка