2016-10-12 3 views
1

Не могу за жизнь меня понять, почему я здесь ошибаюсь. Он позволяет мне вводить ввод, но затем завершает работу и говорит, что theres исключение NullPointerException в строке, которая начинается с «emp [i] .setName».Почему я получаю исключение NullPointer с помощью моего массива?

String dpt, salary, name; 
    Manager[] emp = new Manager[3]; 

    for (int i=0; i<3; i++) 
    { 
     name = JOptionPane.showInputDialog("Enter Name"); 
     emp[i].setName(name); 
+0

потому что вы создаете массив менеджеров, но никогда не устанавливаете каждый элемент массива в 'new Manager()'. – nhouser9

+0

Массив заполнен нулями ... – Li357

ответ

3

При создании массива в Java, все элементы являются обнуляет (для не-примитивных типов в любом случае, Интс, например, будет просто 0). Если вы хотите создать массив с реальными объектами, вам нужно их создать. Один из вариантов (и самый простой), чтобы создать их в цикле, как это:

String dpt, salary, name; 
Manager[] emp = new Manager[3]; 

for (int i=0; i<emp.length; i++) 
{ 
    emp[i] = new Manager(); // Create the object 
    name = JOptionPane.showInputDialog("Enter Name"); 
    emp[i].setName(name); 
} 

Также обратите внимание, что я использую emp.length в цикле for вместо только номер 3. Это так, что если размер вашей изменений в менеджере, вы не закончите с ArrayIndexOutOfRangeException (пытаясь получить доступ к элементу в массиве, который не существует).

This question имеет гораздо более подробный ответ, который определенно стоит прочитать.

+1

'Когда вы создаете массив в Java, все элементы имеют значения nulls' Only для не-примитивных типов. – Zarwan

+0

Собственно, вопрос, который я обозначил как дубликат, имеет более подробную информацию, чем «что является нулевым указателем» –

+0

@ Zarwan, отредактировано. Эта часть о струнах верна, да? – 3ocene

Смежные вопросы