Я только начинаю работать с ООП и пытаюсь создать программу, которая создает массив для хранения трех различных типов информации: имя, двойное значение и Int.
По какой-то причине, когда я запускаю программу и ввожу информацию, она не сохраняется должным образом. Если я ввожу, например, «Джеймс», 22,5, 4 на итерации 1, затем «Джон», 23,66, 8 на итерации 2, а затем распечатываю массив, john, 23,66 и 8 распечатывается дважды. По сути, я хочу, чтобы каждая итерация i в моем массиве сохраняла другой набор значений, но я не могу понять, почему это не работает.
* РЕДАКТИРОВАТЬ, ЧТОБЫ ОТРАЖАТЬ ОТВЕТ
for(int i=0; i<boats.length; i++) {
System.out.printf("Name: " + boats[i].getName(name) + " " +
"Age: " + boats[i].getLength(length) + " " +
"Length: " + boats[i].getRating(rating) + "\n\n");
}
in.close();
** Код для класса
Public Class file
public String getName(String name) {
return name;
}
public double getLength(double length) {
return length;
}
public int getRating(int rating) {
return rating;
}




Ваши геттеры возвращают параметр, который вы передаете, а не значение, сохраненное установщиком.
Значения в переменных, которые вы передаете в качестве параметров, являются последними введенными вами значениями, поэтому вы всегда будете печатать последние введенные вами значения.
Удалите параметр из получателя.
public String getName() {
return name;
}
И призывать как
boats[i].getName()
Спасибо! Это отлично работает, и ваше объяснение помогло мне понять, что я сделал не так.
Прочтите ericlippert.com/2014/03/05/how-to-debug-small-programs, чтобы узнать, как отлаживать код