@Redrik05

Как работает Scanner scanner в виде параметра метода?

Добрый день. Есть задачка на декомпозицию кода. Спагетти с метода main нужно убрать и раскидать по иным методам. Один из них примерно выглядит так:

public static void convert(Scanner scanner, double moneyBeforeSalary) {
        
        double rateUSD = 78.5;
        double rateEUR = 85;
        double rateJPY = 0.74;
        
        System.out.println("Ваши сбережения: " + moneyBeforeSalary + " RUB");
        System.out.println("В какую валюту хотите конвертировать? Доступные варианты: 1 - USD, 2 - EUR, 3 - JPY.");
        int currency = scanner.nextInt();
        
        if (currency == 1) {
            System.out.println("Ваши сбережения в долларах: " + moneyBeforeSalary / rateUSD);
        } else if (currency == 2) {
            System.out.println("Ваши сбережения в евро: " + moneyBeforeSalary / rateEUR);
        } else if (currency == 3) {
            System.out.println("Ваши сбережения в иенах: " + moneyBeforeSalary / rateJPY);
        } else {
            System.out.println("Неизвестная валюта");
        }
    }


В условии задачи написано:
Метод convert будет использоваться для конвертации валют. Заготовку параметров для него вы найдёте в прекоде. Он должен принимать в качестве аргументов остаток денег на счету и переменную сложного типа scanner — это позволит не дублировать код для считывания выбора валюты.


Я не понимаю как должен работать Scanner scanner тут, и что на его место нужно передать при вызове метода.

Вопрос: как изменить код, чтобы он был правильным, и как правильно вызвать метод, чтобы он работал?

Спасибо, заранее!
  • Вопрос задан
  • 804 просмотра
Решения вопроса 1
axifive
@axifive
Software Engineer
В метод просто передается объект Scanner, смотрите откуда он считывает.
Системный ввод можно так передать:
convert(new Scanner(System.in), 1.55)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы