JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/что то одно условие не проходит , не вижу из за чего
Анна Ивашенцева
24 уровень
  • 07.02.2020
  • 1235просмотров
  • 8комментариев

что то одно условие не проходит , не вижу из за чего

Вопрос по задаче Странные ошибки
Java Core,  10 уровень,  2 лекция
Обсуждается


При чтении/записи объектов типа Human возникают странные ошибки.
Разберись в чем дело и исправь их.

Требования:
  • Логика чтения/записи реализованная в методах save/load должна работать корректно в случае, если список assets равен null.
  • Логика чтения/записи реализованная в методах save/load должна работать корректно в случае, если поле name и список assets не равны null.
  • Класс Solution.Human не должен поддерживать интерфейс Serializable.
  • Класс Solution.Human должен быть публичным.
  • Класс Solution.Human не должен поддерживать интерфейс Externalizable.
  • Метод equals должен возвращать true для двух равных объектов типа Human и false для разных.
  • Метод hashCode должен всегда возвращать одно и то же значение для одного и того же объекта типа Human.
....
package com.javarush.task.task20.task2005; public class Asset { public Asset(String name) { this.name = name; } private String name; private double price; public String getName() { return name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Asset asset = (Asset) o; if (Double.compare(asset.price, price) != 0) return false; return name != null ? name.equals(asset.name) : asset.name == null; } @Override public int hashCode() { int result; long temp; result = name != null ? name.hashCode() : 0; temp = Double.doubleToLongBits(price); result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } }
0
Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
mr oov
Уровень 22
5 октября 2020, 16:01
Вообще решается, через IDea. alt+ins и вперед)
+2
Дмитрий
Уровень 39
29 сентября 2020, 13:05
Другими словами 2 человека равны, если у них равны имена (name) и активы (assets) одновременно. Переписал понятным мне языком и валидатор принял.
0
Игорь Ершов
Уровень 23
30 апреля 2020, 21:15
Внимательно проверьте 51 строчку, там два исправления надо сделать. ТОже долго сидел, в упор не видел if (name == null ? !name.equals(human.name) : human.name != null) return true;
+1
Roma Tarasenko
Уровень 31
6 марта 2020, 08:17
в 51 строчке if (name == null ? !name.equals(human.name) : human.name != null) return true; если null то вызываем equals, это NullPointerException а в 52 все в порядке
+2
Ksenia VolkovaJava Developer в DXCMaster
7 февраля 2020, 12:09
if (name == null ? !name.equals(human.name) : human.name != null) return true; тут ошибка логики В 52 строке: если assets не null, то метод вернет true в случае, если assets равны. А если assets null, то метод вернет true если у второго объекта assets тоже null
+6
Анна Ивашенцева
Уровень 24
7 февраля 2020, 11:54
почему вообще вместо условия написано слово return? но когда я поставлю как условие он ругается
0
Анна Ивашенцева
Уровень 24
7 февраля 2020, 11:54
я не могу разобраться в 52 строчке
0
Alex V. Sokoloww
Уровень 23
20 февраля 2022, 13:21
не надо тебе 52 строгать, тебе выше об этом написали. распиши 51 строку как ты её понимаешь. Если актуально.
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush