Не удается распечатать желаемый вывод во время тренировки геттеров-сеттеров

#java

Вопрос:

Помимо метода get и set, я создал метод под названием printAllDetails с целью распечатки сведений о каждом владельце регистрации. Есть 3 участника регистрации, каждый из которых имеет соответствующие имена и возраст.

 public class BASIC_GettersSetters {

String name;
int age;

public static void main(String[] args) {
    
    BASIC_GettersSetters a = new BASIC_GettersSetters(); // Assume BASIC_GettersSetters is Account
    
    a.setName("Kim Hyun Jin");
    a.setAge(32);
    System.out.println(a.getName());
    System.out.println(a.getAge());
    
    a.setName("Kang Jeon Il");
    a.setAge(32);
    System.out.println(a.getName());
    System.out.println(a.getAge());
    
    a.setName("Choi Jin Woo");
    a.setAge(30);
    System.out.println(a.getName());
    System.out.println(a.getAge());
    
    a.printAllDetails();
    
}
 

Метод находится в самом низу. Когда я нажал клавишу F6, чтобы запустить программу, она показывает только последнего владельца регистрации; Чхве Чжин Ву, 30 лет. Так что я прямо здесь в замешательстве. Должен ли я использовать массив? Но тогда, как мне применить его вместе с методами get и set? Или мне следует использовать что-то еще, о чем я не знаю?

     public void setName(String name) {
    this.name = name;
}

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

public String getName() {
    return this.name;
}

public int getAge() {
    return this.age;
}

public void printAllDetails () {
    System.out.println("Registrants : "   getName()   " // "   getAge());
}
 

}

Любая помощь будет признательна. Спасибо. — Кодирующий нуб

Комментарии:

1.Вы создаете только один BASIC_GettersSetters экземпляр, имя и возраст которого постоянно меняете.

2. вы в основном переназначаете значения, используете arraylist или что-то подобное, а затем добавляете к нему значения

3. Чтобы создать 3 владельца регистрации, создайте 3 объекта (таким образом, три раза new BASIC_GettersSetters() )

4. Но вам также нужно будет вызвать print каждый из 3 объектов.

Ответ №1:

Вы создаете один экземпляр BASIC_GettersSetters и неоднократно меняете значения. Поэтому, когда вы звоните printAllDetails , он печатает последний набор значений.

Вы хотите создать отдельные экземпляры:

 BASIC_GettersSetters a = new BASIC_GettersSetters(); 
a.setName("Kim Hyun Jin");
a.setAge(32);
System.out.println(a.getName());
System.out.println(a.getAge());

BASIC_GettersSetters b = new BASIC_GettersSetters(); 
b.setName("Kang Jeon Il");
b.setAge(32);
System.out.println(b.getName());
System.out.println(b.getAge());

BASIC_GettersSetters c = new BASIC_GettersSetters(); 
c.setName("Choi Jin Woo");
c.setAge(30);
System.out.println(c.getName());
System.out.println(c.getAge());

a.printAllDetails();
b.printAllDetails();
c.printAllDetails();
 

Вам также следует подумать о переименовании BASIC_GettersSetters() во что-то более значимое.

Комментарии:

1. Понял. Поэтому мне нужно создать отдельные экземпляры, чтобы отслеживать владельцев регистраций в этом случае. Спасибо 🙏

Ответ №2:

Вы создаете только один объект ( new BASIC_GettersSetters() ). Если вы вызываете сеттер для одного и того же объекта несколько раз, вы перезаписываете ранее установленное значение.

Во-первых, вы должны правильно называть свои классы. Я предлагаю переименовать вас BASIC_GettersSetters в Registrant . Во-вторых, вы должны создать столько Registrant объектов, сколько необходимо (в вашем случае три).