java - 调试 NullPointerException

标签 java nullpointerexception polymorphism

由于我无法弄清楚的原因,我在此类中收到 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/

相关文章:

java - Android定时器抛出空指针异常

java - 防止打印多个对象

java - hibernate : Best way to delete elements in a collection

java - 如何向 rmiregistry 传递多个参数

java - java中从查询中获取值时出现空指针异常

java - DbHelper 类上下文中出现奇怪的空指针异常,其中的代码

oop - 父类(super class)和父类(super class)的区别以及子类和子类的区别

polymorphism - Hack语言会支持函数重载多态吗?

用于手动序列化的 Java 接口(interface)

java - 在更大的文本中检索某些文本