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

  • 5
  • Недоступна
Попробуем создать программу для семейной переписи. Для этого пишем класс Human с полями имя(String), пол(boolean), возраст(int), дети (ArrayList Human). Для тренировки создайте объекты и заполните их данные так, чтобы получилось два дедушки, две бабушки, отец, мать, трое детей. Выведите объекты на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (231)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Dmitry Ryazanov26 уровень
3 апреля, 15:19
По четвертому требованию (Класс Solution должен содержать один метод.): Кто юзает для вывода
people.forEach(x -> System.out.println(x))
у вас не пройдет валидация по данному пункту. Используйте стандартный
foreach (Human human : people)
Halyna9 уровень, Киев
28 марта, 16:56
Не понимаю, что не так. Инцеста нет, выводятся по одному. Всё равно последнее условие не выполняется: >Программа должна создавать объекты и заполнять их так, чтобы получилось: два дедушки, две бабушки, отец, мать, трое детей и выводить все объекты Human на экран.
Евгений16 уровень
19 марта, 12:55
Господи это ужасно Все что нужно знать написано ниже, НО. При создании 1 бабушки укажите в поле РЕБЕНОК - Отца При создании 2 бабушки укажите в поле РЕБЕНОК - Мать С дедушками аналогично
Kovis9 уровень, Санкт-Петербург
18 марта, 20:26
Админы! либо добавьте условие "public" для переменных класса в задачу, либо правьте тесты. наплевать на количество попыток решения, но начинают раздражать "тонкости", о которых ни слова и их все больше и больше с каждым уровнем.
Viktor 17 уровень
16 марта, 18:59
попробовал собрать все объекты в ЭррейЛист и выводить в цикле - валидатор не пропустил. По одному - скушал на Ура
Dendy12 уровень, Москва
14 марта, 22:17
Будьте осторожны, валидатор не принимает вариант с private полями класса
Pavel Kurashov12 уровень, Новосибирск
11 марта, 17:11
Резюмируя по комментам, по поводу бездетных ещё детей и NullPointer Exception, есть три способа: 1. Улучшение метода toString(), проверкой на != null 2. передача пустого списка. 3. Инициализация children сразу в конструкторе Согласитесь, 1-й способ улучшает читаемость кода, когда создаём бездетных ещё детей, а ещё важней делает toString() более надёжной:
Human kid1 = new Human("Аня",false, 12, null);
Пустой список как раз не улучшает читабельность, но решает эксепшн
Human kid2 = new Human("Лена",false, 13, new ArrayList<>(Collections.emptyList()));
3-й способ решает эксепшн через улучшение класса Human. IDEA подсказала что можно использовать синглтон если есть только один элемент, или пустой:
Human dad = new Human("Петя",true, 35, new ArrayList<>(Arrays.asList(kid1, kid2, kid3)));
Human grandMom1 = new Human("Люся",false, 54, new ArrayList<>(Collections.singleton(mom)));
Не хватает, или я не нашел с ходу конструкции for %i in (a, b, c), пришлось для печати городить вот это:
for (Human h: Arrays.asList(kid1, kid2, kid3, mom, dad, grandDad1, grandMom1, grandDad2, grandMom2))
Евгений Майдуров10 уровень, Новосибирск
17 марта, 18:23
Привет земеля!)
Александр8 уровень
31 марта, 20:01
А без этой Collections.singleton(mom) штуки разве не будет работать?
Pavel Kurashov12 уровень, Новосибирск
1 апреля, 03:32
Можно и без неё, просто передавая массив из одного элемента... то на то и выходит
Artem Yaremchuk10 уровень, Омск
16 апреля, 15:06
а вариант, вообще не передавать список в конструктор?
public Human (String name, boolean sex, int age){
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.children = new ArrayList <>();
         }
Pavel Kurashov12 уровень, Новосибирск
пятница, 18:02
Думаю можно, в условии не сказано как они должны быть созданы, можно и потом приписывать детей.
katfald18 уровень, Киев
5 марта, 13:50
Без помощи решить не смогла. Задание составлено ужасно. Порядок действий: 1. ArrayList нужно инициализировать в классе Хьмэн, а не в мейне 2. При добавлении людей не указывать детей Human son1 = new Human("son1", true, 5); Human father = new Human("dad", true, 30); 3. Потом каждому добавить его собственных детей father.children.add(son1); ну т.д.
Денис15 уровень, Екатеринбург
28 февраля, 17:27
Не понял зачем конструктор здесь? Он только проблем добавляет. Просто создаете объекты в main, например: Human grandmother2 = new Human(); grandmother2.name = "Nadya"; grandmother2.sex = false; grandmother2.age = 63; grandmother2.children.add(mother); и печатаете: System.out.println(grandmother2.toString()); Ну и так далее. Начать надо только с детей, потом родители, дедки-бабки. Кода правда много, может кто красивей конечно может...
Oleg Zaytsev22 уровень
28 февраля, 18:42
если решил значит норм
Oleg Zaytsev22 уровень
27 февраля, 19:52
Неправильное описание, должно быть 2 конструктора + тустринг