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