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

Ну так я убедился в том, что для одинаковых объектов ответ 0, в чем проблема я не понимаю, честно, ПАМАГИТИ!!!

Вопрос по задаче Comparable
Java Core,  7 уровень,  10 лекция
Архивный


Реализуй интерфейс Comparable<Beach> в классе Beach. Пляжи(Beach) будут использоваться нитями, поэтому позаботься, чтобы все методы были синхронизированы.
Реализуй метод compareTo так, чтобы при сравнении двух пляжей он выдавал:
– положительное число, если первый пляж лучше;
– отрицательное число, если второй пляж лучше;
– ноль, если пляжи одинаковые.
Сравни каждый критерий по отдельности, чтобы победителем был пляж с лучшими показателями по большинству критериев. Учти при сравнении, чем меньше расстояние к пляжу (distance), тем пляж лучше.

Требования:
  • Класс Beach должен содержать три поля: String name, float distance, int quality.
  • Класс Beach должен реализовывать интерфейс Comparable<Beach>.
  • Метод compareTo класса Beach должен учитывать качество пляжа (quality) и дистанцию (distance).
  • Все методы класса Beach, кроме метода main, должны быть синхронизированы.
....
package com.javarush.task.task17.task1714; /* Comparable */ public abstract class Beach implements Comparable<Beach> { private String name; //название private float distance; //расстояние private int quality; //качество public Beach(String name, float distance, int quality) { this.name = name; this.distance = distance; this.quality = quality; } public synchronized String getName() { return name; } public synchronized void setName(String name) { this.name = name; } public synchronized float getDistance() { return distance; } public synchronized void setDistance(float distance) { this.distance = distance; } public synchronized int getQuality() { return quality; } public synchronized void setQuality(int quality) { this.quality = quality; } public static void main(String[] args) { }//thisbeach.quality = 1000;thisbeach.distance = 800; //obeach.quality = 1000; obeach.distance = 900; public synchronized int compareTo(Beach o) { return ((this.getQuality() + (int)this.getDistance()) - (o.getQuality() + (int)o.getDistance())); } }
0
Комментарии (6)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Андрей
Уровень 20
24 июля 2020, 11:21
Ты не спеши, нарисуй на листе объекты и условие. Как вариант: если наш пляж хуже, то нет смысла сравнивать дистанции. если наш пляж лучше, то нет смысла сравнивать дистанции. если наш пляж качественно такой же или лучше, тогда сравним дистанции. если наш пляж одинаков качественно, и ближе (расстояние меньше). если наш пляж одинаков качественно, но дальше (расстояние больше). если наш пляж одинаков качественно, и одинаков по расстоянию. Присвой каждой характеристике универсальный сравнитель ( баллы) по которому можно было бы определить какие позиции лучше-хуже. Тут минус-плюс не подойдет, если мы будем переменные инкрем/декрем на "1", то могут быть одиннаковые значения не отображающие особенность пляжа, напр.: пляж хуже-ближе и пляж лучше-дальше. Нужны конкретные баллы!
0
Андрей
Уровень 20
24 июля 2020, 11:25
Подумай как бы Ты выбирал пляж? Тот что ближе загаженный, или тот что дальше но убранный?
0
Ksenia VolkovaJava Developer в DXCMaster
24 июля 2020, 09:57
Расстояние - отрицательная характеристика. Чем пляж дальше - тем он хуже.
0
Narek Melkonyan
Уровень 19
24 июля 2020, 10:10
извините, а где это указанно? может distance это размер пляжа? как я должен был это понять?
0
Narek Melkonyan
Уровень 19
24 июля 2020, 10:12
и все равно меняю на минус ничего не помогает
0
Андрей
Уровень 20
24 июля 2020, 11:24
переведи distance гугл переводчиком, и налегай на docs.oracle на английском
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush