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.