Собираем семейство

  • 10
  • Недоступна
Попробуем создать программу для семейной переписи. Для этого пишем класс Human с полями имя(String), пол(boolean), возраст(int), дети (ArrayList Human). Для тренировки создайте объекты и заполните их данные так, чтобы получилось два дедушки, две бабушки, отец, мать, трое детей. Выведите объекты на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (610)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Егор Комаров
Уровень 10
29 ноября 2021, 15:20
Ничего не понял, просто нажал показать правильное решение
SWK
Уровень 11
2 ноября 2021, 11:36
А это ограничение откуда следует??? "Убедись, что у полей класса Human нет модификаторов private и static." С private программа работает. Из "Класс Human должен содержать четыре поля." то, что поля не могут быть приватными, не следует. Других ограничений нет.
SWK
Уровень 11
2 ноября 2021, 11:23
И как необученый этому человек должен был додумываться до "Human... children" ? Ощущение, что дали заведомо невыполнимое задание, чтобы по итогам назвать дураком.
Kirill
Уровень 16
5 ноября 2021, 00:30
Я совсем не использовал varargs, и не додумался бы до него на данном этапе. Просто перегружал конструктор. Во втором конструкторе разрешил еще возможность добавлять чад в виде List. А во избежание NullPointerExeption при выводе в консоль детей, добавил в метод toString проверку на null.
if (this.children != null) {
... и дальше код, который уже был дан.
Дмитрий
Уровень 9, Москва
14 декабря 2021, 23:03
надо было инициализировать ArrayList в момент перечисления полей и этой проблемы нет. ArrayList<Human> children = new ArrayList<>(); Задача вообще простая, три действия: 1. Добавляем перечисленные поля в класс, можно и без конструкторов, 2. в Solution добавляем родню: 2 раза (1 бабушка + 1 дедушка = 1 отец/мать) = 3 ребёнка. Ребёнка записываем, например, mother.children.add(son); 3. Выводим на печать через метод toString().
макс лапушкин
Уровень 17, Куровское, Россия
4 августа 2021, 11:29
не понял а почему можно выполнить задачу используя конструктор в требовании ведь написано что класс Human может иметь только один метод но у него уже есть же переопределенный toString
etaxo
Уровень 9, Санкт-Петербург
28 сентября 2021, 07:53
Тоже глаз зацепился за это. В прошлом такой формулировкой мне запрещали использовать конструкторы. Теперь же намекают, что конструктор не метод. В какой момент мы отказались от условности "конструктор = метод" я не понял.
Булат
Уровень 9, Набережные Челны, Россия
20 октября 2021, 11:56
>класс должен содержать только один метод >низя добавлять конструктор >сейчас можно
piersto
Уровень 17, Montreal, Canada
15 июля 2021, 19:25
Решил в стиле: через ж тормоза - создавал списки детей прямо в main. А решение от Javarush использует Collections. Не помню, чтобы мы такое проходили.
etaxo
Уровень 9, Санкт-Петербург
28 сентября 2021, 07:56
В этом курсе задачи иногда убегают вперед. Ты либо гуглишь, либо пропускаешь задачу, чтобы вернуться позже. Капитан ведь предупредил - только для старослужащих.
Сергей Романенко
Уровень 22, Санкт-Петербург, Россия
2 июня 2021, 16:07
Решил задачу с четвёртой попытки, хотя мог бы с первой. Всхохотнул, когда понял в чём дело. Я не стал изобретать велосипед и семью создал аналогичную своей и данные забивал, какие есть по факту. У меня как раз полный набор: два деда, две бабки, родители, сестра и брат. Забил. Ошибка по последнему пункту. Долго понять не мог в чём дело, но разобрался. Сам себя наказал по факту. У меня брат родной, а сестра сводная (у отца по первому браку). Бате в дочки записал, а маме нет. Тестирование показало, что так, видимо, не бывает) Таки дела)))
piersto
Уровень 17, Montreal, Canada
15 июля 2021, 19:35
Подвела тебя семья, сама того не ведая.
Serzhes
Уровень 18, Санкт-Петербург, Россия
15 мая 2021, 08:21
Чтобы было покороче, можно создать конструктор со всеми полями класса - public Human(String name, boolean sex, int age, ArrayList<Human> children). Далее, при создании экземпляров класса, последним аргументом указать "new ArrayList<>()". Сэкономит 9 строк
Dim
Уровень 16, Житомир, Украина
3 апреля 2021, 19:59
решил через кучу новых списков) увидел такое в решении...
Human... children
что оно значит то? и как им пользоваться? подскажите знатоки 🙂🙃
Vitaliy Kang
Уровень 28
4 апреля 2021, 07:03
Это называется varagrs. Почитать можно здесь: https://javarush.ru/groups/posts/2733-java-varargs
Станислав
Уровень 9, Санкт-Петербург
3 апреля 2021, 18:33
Почему поля не должны быть privat? Это же главное правило, поле должно быть private для его изменения делаются set и get методы
Dmitry Enterprise решения на C#
27 февраля 2021, 21:37
Затупил на 20 попыток из-за того, что вместо
public List<Human> children = new ArrayList<>();
прописал
public List<Human> children;
Бывает...
Максим Белоусов
Уровень 18, Москва, Россия
5 июля 2021, 14:39
Я так же и получал при запуске NullPointerException((
Килинар
Уровень 41, Москва
16 августа 2021, 11:33
Угу, у меня еще похлеще:
for(Human child : children)
                this.children.add( child );
Вот только на определенном моменте я в конструкторе поменял название входного массива children на otherChildren, а тут поменять забыл и попыток 5 не мог понять, что не так. Хотя да, тут я еще протупил, что на вывод невнимательно смотрел, а так бы мог сразу понять.