В задаче придается метод toString, с помощью которого в условиях рекомендуется выводить наши объекты на экран в виде строки.
У меня он не работал! О_о
Пришлось его корректировать.
У кого-то он работал без вмешательства?
Мне интересно - это намеренная ошибка? Типа, что бы мы ее выявили и исправили? Просто об этом в задании ни слова.
И если это не "задумка ментора", то может "что-то где-то слетело"? Сегодня как раз обновление прошло, может повлияло? (я задачу скачал как раз в момент, когда сайт "лег" на обновление)
hidden #2054204
14 уровень
Плохое приданное! :)
Решен
Комментарии (15)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
16 апреля 2019, 15:54
Знать бы какой был.
А какой у тебя в результате?
Я ничего не менял в этом методе в этой задаче.
0
hidden #2054204
16 апреля 2019, 15:58
0
IceBergMaster
16 апреля 2019, 16:07
Причина? Должно норм работать.
0
Justinian Judge в Mega City One Master
16 апреля 2019, 16:08
вероятней всего ты поломал логику программы в другом месте, и у тебя слетел метод. Что пришлось подправлять его
0
hidden #2054204
16 апреля 2019, 16:29
2 IceBerg
Нейм выделено красным было (не подчеркнуто, а именно красное, т.е. строка this.children.get(0).name, в ней this.children.get(0). - это норм и даже не подчеркнуто, а name красное) и просило заменить уже и не помню почему. Помню, что не мог понять и решил кусок метода переписать. А строка this.children.size() - все норм. Т.е. список видит, а параметр первого объекта из списка не может взять. Так я и его в цикл запихнул (в оригинале цикл стартовал с int i = 1.
2 Justinian
Разве логика программы могла повлиять? Ведь этому методу и так и так приходит на вход объект, внутри которого есть список с объектами, откуда он и должен дергать данные. Я же, по сути, эти же данные ему и скормил, но иначе, чем он пытался вытащить. (см. выше)
Могу и весь код скинуть, если поможет.
0
IceBergMaster
16 апреля 2019, 16:35
Конечно может, если у тебя name красным, значит логика с этой переменной и нарушена, бросай весь код.
0
hidden #2054204
16 апреля 2019, 16:43
Вот код с изначальным методом.
0
hidden #2054204
16 апреля 2019, 16:44
0
IceBergMaster
16 апреля 2019, 16:49
Вот и Троянский конь - ArrayList<Human>
Там вообще в конструкторе дичь твориться с его инициацией, объяви В конструкторе Параметр должен приходить соответственный, а не Object kid
+1
hidden #2054204
16 апреля 2019, 17:24
Ну да, в конструкторе пришлось извращаться, а то ругалось :)
Я сначала так сделал
и в конструкторе
Тогда вопрос на мое понимание.
(вариант для деда, как можно было сделать)
поле класса
а в самом конструкторе
В параметрах конструктора подаем объект Human рара. И получаем список детей деда, состоящий из одного объекта класса Human - рара.
Так?
0
IceBergMaster
16 апреля 2019, 17:43решение
Если в параметрах приходит Human papa, то просто
без
В идеале использовать конструкцию (Human... children) принимает произвольное количество аргументов в массив children, а дальше просто можно в список конвертнуть.
+2
hidden #2054204
16 апреля 2019, 17:43
Все, разобрался. Исправил конструкторы и метод toString() работает.
Привел поле класса Хуман к виду
а конструкторы к виду:
0
hidden #2054204
16 апреля 2019, 17:48
Ясно!
Спасибо!
Кстати, у моего изначального способа есть преимущество!
В "дети" можно добавлять объекты разных классов, а не только Хуман.
Вдруг кошечку или собачку решат удочерить. В истории прецеденты имелись.
:))))
0
IceBergMaster
16 апреля 2019, 17:53полезный
Вот только если мы держим в руках <Object>, то мы не знаем кошечка это, человек или ещё что-то)) соответственно мы не знаем если в "объекта" имя, умеет ли "объект" что-то делать и т.д. Поэтому у тебя и была ошибка с name.
+1
hidden #2054204
16 апреля 2019, 18:00
Спасибо!
0