Может кто-нибудь объяснить, почему я получаю ошибку в этом коде - PullRequest
0 голосов
/ 29 марта 2019

Я делаю оператор throw IllegalArgumentException в своем классе конструктора моего класса, чтобы проверить, больше ли возраст ввода пользователя, чем хотел maxAge.Я использую операторы if для выдачи пользователю IllegalArgumentException, если введенный возраст выше, чем 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;
        }   
    }

Ответы [ 2 ]

0 голосов
/ 29 марта 2019
Period.between(null, LocalDate.now());

Над строкой кода будет выброшено

java.lang.NullPointerException

Попробуйте передать ненулевое значение в startDate, а также добавьте нулевые проверки в свой код, чтобы избежать любых подобных исключений.

0 голосов
/ 29 марта 2019

Я считаю, что ваша проблема в том, что вы используете переменную экземпляра bday вместо переданного параметра bDay. bday еще не был создан и как таковой не существует.

Я предлагаю вам быть предельно осторожным с такими близкими именами переменных. Это избавит вас от многих проблем, так как ваши проекты станут больше и сложнее.

...