0%

对象赋值时空指针异常:Exception in thread 'main' java.lang.NullPointerException: Cannot invoke 'src.com.simonf.Employee.setName(String)' because 'employees[i]' is null at src.com.simonf.test1.main(test1.java:11)

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class test1 {
public static void main(String[] args) {
Employee[] employees = new Employee[3];
System.out.println("-----------------" + "添加第1个员工" + "--------");
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
int[] arr = new int[3];
employees[i].setName(sc.next());
employees[i].setGender(sc.next().charAt(0));
employees[i].setAge(sc.nextInt());
employees[i].setSalary(sc.nextDouble());
employees[i].setPhoneNumber(sc.next());
employees[i].setEmail(sc.next());
}
System.out.println("--------------"+"添加完成"+"--------");
System.out.println("--------------"+"员工列表"+"--------");
for (int i = 0; i < 3; i++) {
System.out.println(employees[i].toString());
System.out.println("--------------------------------");
}
System.out.println("--------------"+"员工列表完成"+"--------");
}
}

张三(控制台输入)
报错:

1
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "src.com.simonf.Employee.setName(String)" because "employees[i]" is null at src.com.simonf.test1.main(test1.java:11

这段代码报错的原因是在循环中没有为 employees[i] 分配内存空间,导致其为 null。因此,在使用 employees[i] 的方法时会出现NullPointerException。

要解决这个问题,你需要为 employees[i] 分配内存空间,即创建 Employee 对象并将其赋值给 employees[i]。可以在循环之前为每个employees[i] 创建一个新的 Employee 对象,如下所示:

1
2
3
4
5
6
7
8
9
for (int i = 0; i < 3; i++) {  
employees[i] = new Employee(); // 创建新的 Employee 对象
employees[i].setName(sc.next());
employees[i].setGender(sc.next().charAt(0));
employees[i].setAge(sc.nextInt());
employees[i].setSalary(sc.nextDouble());
employees[i].setPhoneNumber(sc.next());
employees[i].setEmail(sc.next());
}
-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道