Member 13954890 Ответов: 2

Как я могу напечатать возраст, вызвав только следующие методы?


У меня есть класс Person (сохраненный как Person.java) . Код приведен ниже.
public class Person {

    private int age1;

    public int getAge() {
        return age1;
    }

    public void setAge(int age1) {
        this.age1 = age1;
    }
}

Затем у меня есть класс Employee, который принимает Person в качестве типа данных. Код приведен ниже.(сохранен как Employee.java)
public class Employee {

    Person person;
    private String employeeName;

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    public String getEmployeeName() {
        return employeeName;
    }

    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
}

Тогда у меня есть метод main в отдельном классе Main (Main.java). Код приведен ниже.
public class MainEmployee {

    public static Employee getEmployeeDetails() {
        Scanner s = new Scanner(System.in);
        Employee e = new Employee();
        Person p = new Person();
        System.out.println("Enter name:");
        e.setEmployeeName(s.nextLine());
        System.out.println("Enter age1:");
        p.setAge(s.nextInt());
        return e;
    }

    public static void main(String args[]) {
        Employee e1 = getEmployeeDetails();
        System.out.println("name:" + e1.getEmployeeName());
        System.out.println("pname:" + e1.getPerson().getAge());//here it's showing error
    }
}


Что я уже пробовал:

System.out.println("pname:"+e1.getPerson().getAge());
он бросает NullPointException

2 Ответов

Рейтинг:
7

Richard MacCutchan

Хранить возраст в классе не очень хорошая идея, так как он является правильным только в то время, когда он вводится. Вы должны сохранить дату рождения в виде объекта Date или DateTime и вычислить возраст, когда вам нужно его отобразить.


Member 13954890

хорошо спасибо

Рейтинг:
18

wseng

Вы не устанавливаете p в e,вот почему вы получите исключение нулевого указателя. Напиши вот так

System.out.println("Enter name:");
e.setEmployeeName(s.nextLine());
System.out.println("Enter age1:");
p.setAge(s.nextInt()); // set person's age to person
e.setPerson(p);  // set person to employee 


Member 13954890

Большое вам спасибо @wseng

wseng

всегда пожалуйста