有人可以解释为什么我在这段代码中遇到错误
Can someone please explain why I'm getting an error in this code
我在我的 class 的构造函数 class 中做一个 throw IllegalArgumentException
语句来检查用户输入的年龄是否高于 maxAge
想要的.如果输入的年龄高于 maxAge
,我使用 if 语句向用户抛出 IllegalArgumentException
。 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 中传递非空值并在代码中添加空值检查以避免任何此类异常。
我在我的 class 的构造函数 class 中做一个 throw IllegalArgumentException
语句来检查用户输入的年龄是否高于 maxAge
想要的.如果输入的年龄高于 maxAge
,我使用 if 语句向用户抛出 IllegalArgumentException
。 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 中传递非空值并在代码中添加空值检查以避免任何此类异常。