我正在我的类的构造函数类中抛出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;
}
}
我相信你的问题是你正在使用实例变量bday而不是传递的参数bDay。 bday尚未创建,因此不存在。
我建议你非常小心那样关闭变量名。随着项目变得越来越大,越来越复杂,它将为您节省很多麻烦。
Period.between(null, LocalDate.now());
上面的代码行将抛出
显示java.lang.NullPointerException
尝试在startDate中传递非null值,并在代码中添加空值检查以避免任何此类异常。