我这辈子都弄不明白为什么我会在这里出错。它让我输入,但随后退出并说在以“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有更详细的答案,绝对值得一读。