Биг-задача 25 уровня (13 задание)

Большая задача 25 уровня, про «Рефакторинг».

Обозначение — task2909 (да странно, но это действительно задача 25-го уровня)
Старое обозначение — level29.lesson15.big01

Не могу пройти 13 задание. Все выполнено в соответствии с условием. Валидатор выдает какую-то неправильную ошибку. Может кто разобрался, что нужно сделать, чтобы прошло.

Перепиши метод calculateRate() класса UserHelper, чтобы метод не изменял входные параметры, а просто возвращал рассчитанное значение (метод должен возвращать double). Метод calculateRate() класса UserHelper должен существовать.
Метод переписан и существует. Входные параметры не меняет, возвращает double.

Соответствующий код класса UserHelper
public double calculateRate(double base, int age, boolean hasWork, boolean hasHouse) {
        double result = (double) age / 100 + base;
        result *= hasWork ? 1.1 : 0.9;
        result *= hasHouse ? 1.1 : 0.9;
        return result;
    }


Единственное что смущает, в коде использовался объект AtomicDouble base, который я заменил на double base. Потому что импорт для объекта AtomicDouble все равно не работал. Вот и непонятно теперь — это ошибка с импортом и все же нужно использовать Atomic, или неправильно понял задание…

9 комментариев

rembrand87
Дал ответ тут
kulikovman
Вот исходный код calculateRate()
public void calculateRate(AtomicDouble base, int age, boolean hasWork, boolean hasHouse) {
        base.set(base.get() + age / 100);
        base.set(base.get() * (hasWork ? 1.1 : 0.9));
        base.set(base.get() * (hasHouse ? 1.1 : 0.9));
    }


Таким был импорт. В Идее обозначен как ошибка, так же как и все связанное с объектом Atomic.
import com.google.common.util.concurrent.AtomicDouble;


Так звучит задание, относительно этого метода.
13.5. Удаление присваиваний параметрам. Перепиши метод calculateRate(), чтобы он не пытался менять входные параметры, а просто возвращал рассчитанное значение.
rembrand87
  • rembrand87
  • 0
  • Комментарий отредактирован 2017-02-13 14:30:41 пользователем rembrand87
Если не присваивать параметры, то попробуйте все объединить.

public double calculateRate(double base, int age, boolean hasWork, boolean hasHouse) {
        return (что-то) * (что-то) * (что-то);
    }
kulikovman
Пробовал, не помогает…
rembrand87
Отправил лс.
kulikovman
Разобрался…

Для решения 13 задания — нужно использовать прописанный в коде объект AtomicDouble. Чтобы его использовать нужно подключить к проекту Гугловску библиотеку Guava.

Я понял так, что существует два способа:
1) Скачать библиотеку к себе и подключить в настройках проекта.
2) Использовать Мавен для автоматического подключения. Вот здесь есть хороший файл со ссылками на библиотеки. Его нужно разместить в корне проекта. Перезагружаем Идею, чтобы она все это увидела (будет всплывающее сообщение, что-то там про проект Мавен). Дальше щелкаем на объекте AtomicDouble и используем пункт «подключить библиотеку».
Multik9922
Необходимо переписать метод calculateAverageAge() класса UserHelper без использования переменной age.
public int calculateAverageAge() {
User userUra = new User(«Юра», «Карп», 20);
return (userAnya.getAge() + userRoma.getAge() + userUra.getAge()) / 3;
}
Не проходит. Даже пытался второй конструктор без возраста создать — ничего. Как быть?
kulikovman
Второй конструктор не нужен. Метод calculateAverageAge() написан правильно. Ищите ошибку в другом месте.
TheTOXIN
ВНИМАНИЕ!!!
Если по магическим причинам не проходит задачу. Проверти кодировку и формат сепараторов во всех файлах задачи.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.