为什么我的数组会出现NullPointer异常?

时间:2016-10-12 03:44:43

标签: java arrays class nullpointerexception

我的生活不能弄明白为什么我在这里收到错误。它允许我输入输入,但随后退出并在以" emp [i] .setName"开头的行中说出NullPointerException。

    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);

1 个答案:

答案 0 :(得分:3)

在Java中创建数组时,所有元素都是空的(无论如何都是非基本类型;例如,int将只是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有一个更详细的答案,绝对值得一读。