Java错误和初始化: java_lang_NullPointerException

标签 java arraylist nullpointerexception

下面是我正在开发的一个应用程序:

  • 主类
  • 员工
  • 经理
  • QATester
  • 开发人员

这是 示例场景:

1) For the given hierarchy:
    Manager A  $300
        Manager B  $300
            Developer $1000
            QA Tester $500

2) Manager A’s allocation should be: $2100

我当前遇到的问题是当我运行代码时出现以下错误:

Exception in thread "main" java.lang.NullPointerException
at expenseApp.Manager.add(Manager.java:28)
at main.MainClass.main(MainClass.java:15)

我对发生的事情以及如何解决它有点困惑。能否请你帮忙?我对编程比较陌生,所以建议的例子对我来说有很多帮助。在管理器中,我留下了一些注释掉的代码,这些代码代表了我修复的一些尝试。

谢谢。

package main;

import expenseApp.Developer;
import expenseApp.Manager;
import expenseApp.QATester;

public class MainClass {

    public static void main(String[] args) 
    {
        QATester tester1 = new QATester();
        Developer dev1 = new Developer();

        Manager managerB = new Manager();
        **managerB.add(tester1);**
        managerB.add(dev1);

        Manager managerA = new Manager();
        managerA.add(managerB);

    }

}
<小时/>
package expenseApp;

public abstract class Employee 
{
    public abstract int getExpenses();
}
<小时/>
package expenseApp;

import java.util.ArrayList;

public class Manager extends Employee
{

        private ArrayList<Manager> managerList; //= new ArrayList<>();
        private ArrayList<Employee> employeeList; //= new ArrayList<>();

        // public Manager(ArrayList<Manager> managers, ArrayList<Employee> employees) 
        // {
        //    this.managerList = new ArrayList<>(managers);
        //    this.employeeList = new ArrayList<>(employees);
        // }

    public void add(Employee employee) 
    {
        if(employee instanceof Manager) 
        {
            //managerList = new ArrayList<>();
            managerList.add((Manager) employee);

        }
        else 
        {
            //employeeList = new ArrayList<>();
            **employeeList.add(employee);**

        }
    }

    @Override
    public int getExpenses() 
    {
         return 300;
    }

    public int getTotalExpenses() 
    {
        int totalExpenses = 0;

        for(Manager manager : managerList)
        {
            totalExpenses += manager.getTotalExpenses();
        }

        for(Employee employee : employeeList)
        {
            totalExpenses += employee.getExpenses();
        }

        return totalExpenses;
    }
}
<小时/>
package expenseApp;

public class QATester extends Employee
{

    @Override
    public int getExpenses() 
    {
        return 500;
    }

}


package expenseApp;

public class Developer extends Employee
{
    @Override
    public int getExpenses() 
    {
        return 1000;
    }
}

最佳答案

您已将初始化成员变量的代码注释掉,例如

private ArrayList<Manager> managerList; //= new ArrayList<>();
private ArrayList<Employee> employeeList; //= new ArrayList<>();

尝试:

private ArrayList<Manager> managerList = new ArrayList<>();
private ArrayList<Employee> employeeList = new ArrayList<>();

关于Java错误和初始化: java_lang_NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659136/

相关文章:

java - 在mysql中创建表时出现SQLException

java - 简单聊天服务器/客户端 - 服务器不返回消息

android - 环路效率比较

java - 在 Java 中对多个数组列表进行排序

java.lang.NullPointerException 在模拟器和手机中停止我的应用程序

Tomcat 8 上 Eclipse 项目的 WebServlet 中的 java.lang.NullPointerException

java - 在 java 中调用方法时出现 NullPointerException

java - 如何比较mysql和JAVA中的二进制文件

java - 键盘 View 键码不起作用

java - 从 List<String> Java 解析