由于我无法弄清楚的原因,我在此类中收到 NullPointException
错误。这个类应该成功创建一个雇主列表,一个要存储在其中的雇员列表,然后显示所有雇主及其雇员。目前,下面的 for 循环似乎在某种程度上增加了 NullPointException
错误。
这是我的 TEST 类的完整代码,上面的行进一步向下。
import java.util.*;
public class TestEmployer {
public static void main(String agrs[]) {
Scanner get = new Scanner(System.in);
int i, j, esize = 0;
System.out.println("Number of employers: ");
int size = get.nextInt();
while (size < 5) {
System.out.println("Size must be at least 5: ");
size = get.nextInt();
}
Employer list[] = new Employer[size];
for (i = 0; i < size; i++) {
System.out.println("How many employees? ");
esize = get.nextInt();
while (esize < 10) {
System.out.println("Must be at least size 10: ");
esize = get.nextInt();
}
Employee elist[] = new Employee[esize];
for (j = 0; j < esize; j++) {
elist[i] = randomEmployee();
}
list[i] = new Employer(randomEmployer(), elist, "507", 1000.00);
}
for (i = 0; i < size; i++) {
System.out.printf("%s: ", list[i].getName());
for (j = 0; j < esize; j++) {
System.out.printf("\n%s", list[i].getEmployees()[j].toString());
}
}
}
}
关于这个空指针异常错误来自哪里的任何线索吗?
对于没有显示原始错误消息,我深表歉意。这是:
Lucas 07/03/1973 06/06/1965:(salaried) 19929.33Exception in thread "main" java.lang.NullPointerException at TestEmployer.main(TestEmployer.java:53)
正如您在上面所看到的,它打印了第一个员工及其信息,然后就消失了。
*编辑2:我对之前的代码表示歉意,这是更新后的代码(没有令人困惑的变量名称)
最佳答案
您的问题源于您的 esize
int 变量保存了第一个列表中存储的最后一个数组的长度(您继续用每个数组的长度覆盖相同的变量),因此您可以轻松地循环和显示时超出数组范围。
for(j=0; j < esize; j++){
应该是
for(j=0; j < list[i].getEmployees().length; j++){
关于java - 调试 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23577109/