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

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

最佳答案

当您在 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);
}

另请注意,我在 for 循环中使用了 emp.length,而不仅仅是数字 3。这样一来,如果您的管理器数组的大小发生变化,您不会以 ArrayIndexOutOfRangeException 结束(尝试访问数组中不存在的元素)。

This question有更详细的答案,绝对值得一读。

关于java - 为什么我的数组会出现 NullPointer 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39990185/

相关文章:

java - 数据成员应该直接访问还是使用getter方法?

java - 构建图形数组

arrays - 如何在 Julia 中将函数应用于其中包含数组的数据帧?

javascript - Node .js |将一个数组中的元素插入到另一个数组中的随机位置

c - 函数中的操作数组 - c - 段错误

java - 平均类(class)不工作

java - 在 Java/Groovy 中将 XML 转换为 Object[]

java - 在 Apache 中为 1 个 Java 文件创建两个类文件

java - 如何在 Java 中设置 WriteConcern 以非常安全地写入 MongoDB 副本集

java - 如何从 Java 中的不同类读取私有(private)字段的值?