有人可以解释为什么我在这段代码中收到错误

问题描述 投票:0回答:2

我正在我的类的构造函数类中抛出IllegalArgumentException语句来检查用户的输入的年龄是否高于maxAge想要的年龄。如果输入的年龄高于IllegalArgumentException,我正在使用if语句向用户抛出maxAge。 IDE给我的错误是java.lang.NullPointerException

我试图声明并在if语句之外分配值

int timePeriod = (Period.between(bday, LocalDate.now()).getYears()); 
int maxAge = 101;

检查我是否仍然收到错误。似乎问题出在periods.between >> getYear声明中。

码:

    public Instructor(String fname, String lname, int ID, String road, String cty, String postalCode, LocalDate reg, LocalDate bDay) throws IllegalArgumentException 
    {   
        int timePeriod = (Period.between(bday, LocalDate.now()).getYears());
        int maxAge = 101; 
        System.out.print(timePeriod);
        //if (101 < (Period.between(bday, LocalDate.now()).getYears())) { 
        if (maxAge < timePeriod) { 

            throw new IllegalArgumentException("Please check the year entered, instructor cannot be over 100 years old.");
        } 
        else { 
            this.first = fname;
            this.last = lname;
            this.instructID = ID; 
            this.address = road;
            this.city = cty;
            this.postCode = postalCode;
            this.regDate = reg;
            this.bday = bDay;
        }   
    }
java class constructor illegalargumentexception
2个回答
0
投票

我相信你的问题是你正在使用实例变量bday而不是传递的参数bDay。 bday尚未创建,因此不存在。

我建议你非常小心那样关闭变量名。随着项目变得越来越大,越来越复杂,它将为您节省很多麻烦。


0
投票
Period.between(null, LocalDate.now());

上面的代码行将抛出

显示java.lang.NullPointerException

尝试在startDate中传递非null值,并在代码中添加空值检查以避免任何此类异常。

© www.soinside.com 2019 - 2024. All rights reserved.