for (int i = 0; i < animal_list.size(); i++){
s += animal.getName() + " who weighs " + animal.getWeight() + " kg.";
}
Поскольку вы не используете List
, вы пытаетесь сослаться на поле animal
в вашем Zoo
(которое вы фактически нигде не используете). Вы должны получить свои Animal
с вашего animal_list
for (int i = 0; i < animal_list.size(); i++){
s += animal_list.get(i).getName() + " who weighs " +
animal_list.get(i).getWeight() + " kg.";
}
Обратите внимание, что вам действительно следует использовать StringBuilder
здесь, а не создавать новые String
объекты с операторами +=
и +
:
public String toString() {
StringBuilder s = new StringBuilder("In zoo ");
s.append(zoo_name).append(" there are the following animals:\n");
for (int i = 0; i < animal_list.size(); i++){
s.append(animal_list.get(i).getName());
s.append(" who weighs ");
s.append(animal_list.get(i).getWeight());
s.append(" kg.\n");
}
return s.toString();
}
String
являются неизменными в Java; Вы не можете изменить их. Когда вы объединяете их, используя +=
или +
, вы фактически создаете новые String
объекты и отбрасываете старые. Компилятор фактически оптимизирует это до StringBuilder
, но хорошей практикой является не оставлять его компилятору.
Изменить, чтобы добавить:
Если вы не знакомы, приведенный выше пример цепочка методов
Когда вы говорите что-то вроде:
String name = animal_list.get(i).getName();
Это эквивалент:
Animal a = animal_list.get(i);
String name = a.getName();