调用类方法时发生错误java.lang.NullPointerException

QAGuy

我正在尝试制作一个使用姓名,开始日期,员工薪水的程序。因此,香港专业教育学院开设了几门课,包括我的电话课:

TestWorker.java

public class TestWorker {
    public static void main(String[] args) {
        Worker w1, w2, w3;
        w1 = new Worker ("Robert  William Hunter", "23/10/2005", 35000.00);
        w2 = new Worker ("John Smith", "15/11/2005", 25000.00);
        w3 = new Worker ("Mary Jane Hull", "06/09/2007");
        w2. setSalary(20000.00);
        w2.setSupervisor(w1);
        w3.setSupervisor(w1);
        System.out.println("Number of workers = " + Worker.getHowManyWorkers() +" \n");
        System.out.println("Supervisor of John is " + w2.getSupervisorName());
        System.out.println(w1.toString()+" \n");
        System.out.println(w2.toString()+" \n");
        System.out.println(w3.toString()+" \n");
    }
}

worker.java

public class Worker {
    private Name workerName;
    private MyDate dateJoiningCompany;
    private Worker Supervisor;
    public Worker(String name, String date, double salary) {
        workerName = new Name(name);
        dateJoiningCompany = new MyDate(date);
        Salary = (float)salary;
    }
    public Worker(String name, String date) {
        workerName = new Name(name);
        dateJoiningCompany = new MyDate(date);
    }

    public void setSupervisor(Worker supervisor) {
        if(supervisor != null) {
            Supervisor.workerName = supervisor.workerName;  //ERROR HERE
            Supervisor.dateJoiningCompany = supervisor.dateJoiningCompany;
        }
        else {
            System.out.println("The person you are trying to assign a Supervisor to has no supervisor");
        }
    }
    public String toString() {
        if(Supervisor != null) {
            return (workerNumber + " " + workerName.toString() + " " + dateJoiningCompany.toString() + " " + Supervisor.workerName.toString() + " " + Salary);
        }
        else {
            return (workerNumber + " " + workerName.toString() + " " + dateJoiningCompany.toString() + " " + Salary);
        }
    }
}

Name.java

import java.util.StringTokenizer;

public class Name {
    private String firstName;
    private String middleName;
    private String lastName;
    public Name(String name) {
        StringTokenizer tokens;
        tokens = new StringTokenizer(name," ");
        int numTokens = tokens.countTokens();
        if(numTokens == 2) {
            firstName = tokens.nextToken();
            middleName = null;
            lastName = tokens.nextToken();
        }
        else if(numTokens == 3) {
            firstName = tokens.nextToken();
            middleName = tokens.nextToken();
            lastName = tokens.nextToken();
        }
        else {
            System.out.println("That was not a valid input");
            return;
        }
    }
    public Name(Name name) {
        if(name != null) {
            firstName = name.firstName;
            middleName = name.middleName;
            lastName = name.lastName;   
        }
    }

当我运行它时,我会得到错误提示Supervisor.workerName = supervisor.workerName;我通过阅读答案https://stackoverflow.com/a/10464598/5339899了解错误,但我无法理解为什么supervisor.workerName为null。

我删节了与该问题无关的类中的一些代码,因此,如果它似乎缺少重要的内容,请发表评论,我将使用所需的代码进行更新

尼尔·利维(Nir Levy)

您永远不会Supervisor在类中初始化变量,因此会出现空指针异常。

还有一件事-通用约定是,类名以大写字母开头,变量以小写字母开头,因此将Supervisor用作变量的名称并不是那么好。也建议不要使用两个具有相同名称的变量,一个使用大写字母,另一个使用小写字母,这会使像这样的行非常混乱:Supervisor.workerName = supervisor.workerName;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从数组访问方法时发生java.lang.NullPointerException错误

从自定义类调用方法时,java.lang.NullPointerException错误

尝试在类中调用setContentView以扩展MainActivity时发生java.lang.NullPointerException

java.lang.NullPointerException?

java.lang.nullpointerexception错误

java.lang.NullPointerException错误?

java.lang.NullPointerException错误

java.lang.NullPointerException错误

Mockito:从模拟的类调用方法时出现java.lang.NullPointerException

使用多个类的方法时出现 java.lang.NullPointerException

在创建webview时,它显示类似“ java.lang.NullPointerException”的错误:尝试调用接口方法

SecurityHelper.prepareSignatureParams()OpenSAML调用期间发生java.lang.NullPointerException错误

JDBC:java.lang.NullPointerException

java.lang.NullPointerException :(片段)

遇到java.lang.NullPointerException

getResourceAsStream 的 java.lang.NullPointerException

java.lang.NullPointerException: uriString

Jmeter java.lang.NullPointerException

java.lang.NullPointerException出现

java.lang.NullPointerException OnItemClickListener

mainactivity-java.lang.NullPointerException

java.lang.NullPointerException PrintWriter

引起:java.lang.NullPointerException:

“错误或错误” java.lang.NullPointerException

java.lang.NullPointerException Selenium 2类

会话类上的java.lang.NullPointerException

Eclipse错误:java.lang.NullPointerException

错误java.lang.NullPointerException JSF

java.lang.NullPointerException(无错误消息)