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

  • 10
  • Недоступна
Попробуем создать программу для семейной переписи. Для этого пишем класс Human с полями имя(String), пол(boolean), возраст(int), дети (ArrayList Human). Для тренировки создайте объекты и заполните их данные так, чтобы получилось два дедушки, две бабушки, отец, мать, трое детей. Выведите объекты на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (340)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Стас8 уровень
позавчера, 19:19
Все что нужно для решения этой задачи уже было в курсе. Самое главное - правильно разбить задачу по этапам: 1) Создаем ArrayList по количеству поколений (Бабушки и Дедушки, Родители, Дети, Дети детей (их в программе нет, но без этого ArrayList-а вылетала Exception, даже с добавлением конструктора без children) 2)Через .add добавляем объекты по ArrayList-ам c учетом поколений пример на детях:
generation3.add(new Human("Child1", true, 5, generation4));
        generation3.add(new Human("Child2", false, 6, generation4));
        generation3.add(new Human("Child3", true, 7, generation4));
3) Объединяем все созданные объекты в одном ArrayList с помощью addAll; 4) C помощью цикла for each вывожу все элементы из списка который был создан при выполнении пункта 3. P.S. Про инициализацию переменных и создание конструкторов не пишу, это вроде как easy.
Ernest Yurkoits10 уровень, Минск
суббота, 20:02
удобно печатать из конструктора. и добавлять детей в аргументы через ...
Евгений9 уровень, Минск
четверг, 22:03
В задаче есть проверка на идеологию семьи. Не прокатил случай, когда у родителей не все дети - общие. Сам не знаю, зачем я это проверил.
OldFreddy9 уровень, Ростов-на-Дону
2 декабря, 09:23
Долго я страдал над этой задачей, пока в комментариях не наткнулся на подсказу - создать для каждой категории людей свой конструктор, после чего решение было найдено
leksa13 уровень, Москва
21 ноября, 14:39
Задачка хитрая. Смотрим внимательно в toString и видим, что там прописан код для считывания детей. Значит, нам пофиг на что создаваемые объекты могут иметь родителей (то есть мы этого не делаем), нам главное прописать, что у объектов есть дети (да, да, у детей тоже необходимо задать форму для потенциальных детей, даже если детей нет). Далее, учитываем, что родители имеют только одну пару дедушка-бабушка - каждый свою (не проверял, но в обсуждении пишут, что валидатор проверяет).
Дима Насонов15 уровень, Москва
15 ноября, 06:37
В задаче не написано, что поля должны быть должны быть public, а валидатор на это ругается(тк не имеет доступа к ним)
Дмитрий16 уровень, Москва
19 ноября, 12:40
Тоже попался на этом.
Yuriy14 уровень, Москва
2 часа назад
11 попыток и надо было посмотреть на подсказку после первого запуска... Не понимаю смысл, чтобы поля были не private. Может для своей внутренней проверки корректности выполнения условий кода.. Кто читает комменты - проверьте, что поля не private!)
Natasha Bert13 уровень, Szczecin
13 ноября, 12:35
Напрягло то, что не написано, час старички должны в детях иметь среднее поколение. Почему это нужно додумать? Потому что заказчик сам не знает, чего хочет, а ты должен блаблаблабла
Смол10 уровень
19 ноября, 18:15
это вроде как очевидно, иначе очень забавная семья получается, не находишь ?😂
Natasha Bert13 уровень, Szczecin
20 ноября, 18:21
да это понятно, но тут то нужно прям по пунктам делать, то додумывать. Слёёёжно =)))) ладно, затупила - признаюсь.
Миша Небоярски9 уровень, Питер
30 октября, 12:44
Невзлюбил задачку за условие об одном методе, заманался руками инициализировать переменные вместо того чтобы два конструктора написать...
Евгений9 уровень, Минск
четверг, 22:06
Я тоже понял это как запрет на создание конструктора и накопипастил в майне кучу четверостиший.
Александр12 уровень
28 октября, 06:41
Human mother = new Human("Катерина", female, 37,
    new ArrayList<>(Arrays.asList(son1, son2, daughter)));
Миша Небоярски9 уровень, Питер
30 октября, 12:48
а вот эта высшая магия очень крутая, жаль, что я ее не знал и 10 раз писал конструкцию humanX.children.add()....
Natasha Bert13 уровень, Szczecin
13 ноября, 12:34
ооо. прекрасно!
Смол10 уровень
19 ноября, 18:29
я не понял как лист в качестве аргумента передается. что так в конструкторе нужно написать?
Смол10 уровень
19 ноября, 18:52
всё, разобрался, сразу инициализируем лист. с этой конструкцией очень органично. а что за аргумента такой female? на место boolean
Александр12 уровень
20 ноября, 12:36
male - мужской пол, female - женский ;)
Смол10 уровень
20 ноября, 18:06
это boolean переменные так понимаю 😶
Александр12 уровень
20 ноября, 18:35
само собой. просто более понятные имена дал )
Смол10 уровень
20 ноября, 23:48
ok) но так можно и запутать народ-то
Kubik_1310 уровень, Москва
3 декабря, 12:03
а не могли бы вы обьяснить про вот этот момент
new ArrayList<>(Arrays.asList(son1, son2, daughter))
20 октября, 14:31
Минус этой задачи в том , что если создать статик массив и в него добавлять при создании экземпляра класса ( через конструктор ) - то такую конструкцию валя не пропустить (
Смол10 уровень
19 ноября, 18:53
непонятно только зачем нам статик в этой задаче??
Aleksandra9 уровень, Санкт-Петербург
пятница, 13:41
Аналогично, попыталась сделать статик лист в solution, чтобы конструктор добавлял в него созданные объекты, валидатор посчитал это еще одним методом в solution.