Пора привести в порядок наш main, уж очень там всего много, чего не должно быть.
1. Перенеси логику из main в DepositCommand и InfoCommand.
Проверим, что там стало с main? Цикл, в котором спрашиваем операцию у пользователя, а потом вызываем метод у CommandExecutor.
И так до бесконечности... надо бы придумать условие выхода из цикла.
Исправь цикл, чтоб он стал do-while. Условие выхода - операция EXIT.
2. Давай запустим прогу и пополним счет на EUR 100 2 и USD 20 6, и посмотрим на INFO.
Ничего не понятно, т.к. создались 2 манипулятора: первый для EUR, второй для USD.
Давай улучшим логику InfoCommand. Надо вывести баланс по каждому манипулятору.
2.1. В классе CurrencyManipulatorFactory создай статический метод getAllCurrencyManipulators(), который вернет Collection всех манипуляторов.
У тебя все манипуляторы хранятся в карте, не так ли? Если нет, то отрефактори.
2.2. В InfoCommand в цикле выведи [код валюты - общая сумма денег для выбранной валюты].
Запустим прогу и пополним счет на EUR 100 2 и USD 20 6, и посмотрим на INFO.
Все работает правильно? EUR - 200
USD - 120
Отлично!
3. Запустим прогу и сразу первой операцией попросим INFO. Ничего не вывело? Непорядок.
Добавь в манипулятор метод boolean hasMoney(), который будет показывать, добавлены ли какие-то банкноты или нет.
4. В InfoCommand используй метод п.3. и выведи фразу "No money available.", если нет денег в банкомате.
Требования:
В классе CurrencyManipulatorFactory должен быть публичный статический метод Collection <CurrencyManipulator> getAllCurrencyManipulators().
В классе CurrencyManipulator должен быть метод boolean hasMoney().
В классе InfoCommand в методе execute() для каждого манипулятора выведи: "код валюты - общая сумма денег для выбранной валюты", если денег нет в банкомате выведи фразу, "No money available.".
В классе DepositCommand в методе execute() запроси код валюты, потом запроси номинал и количество банкнот, а потом добавь их в манипулятор. Если номинал и количество банкнот пользователь ввел не правильно(не числа) - повторять попытку по введению номинала и количества банкнот.
В методе main класса CashMachine запроси операцию у пользователя. Выполни операцию в CommandExecutor. Повторять пока пользователь не выбрал операцию EXIT.
package com.javarush.task.task26.task2613;
import static com.javarush.task.task26.task2613.command.CommandExecutor.execute;
public class CashMachine {
public static void main(String[] args) {
Operation askoperation;
do {
askoperation = ConsoleHelper.askOperation();
execute(askoperation);
}while (!Operation.EXIT.equals(askoperation));
}
}
0
Комментарии (1)
популярные
новые
старые
Для того, чтобы оставить комментарий Вы должны авторизоваться