Задача по циклам курса Я.Практикум Java

Нужно заполнить отсутствующие куски кода. Не могу въехать.

Задача

Пользователю предоставляется возможность выбрать валюту из следующего списка: рубли, доллары, евро или юани.

Если пользователь вводит некорректный номер валюты, программа автоматически устанавливает валюту по умолчанию (рубли) и производит расчёты на основе этой валюты.

Подсказка

Посчитайте выбранный пользователем номер валюты с помощью NumberReader.getInteger(). Сохраните результат в переменную currency типа int.

Используя условные операторы if...else if...else, установите значения переменных exchangeRate, interestRate и currencySymbol в зависимости от выбранной валюты.

Если выбранная валюта – рубли (переменная currency равна единице), переменная exchangeRate не должна использоваться.

Добавьте обработку ситуации, когда пользователь вводит некорректный номер валюты. В этом случае выведите сообщение об ошибке и установите валюту по умолчанию — рубли (currency = 1). Не забудьте установить значения interestRate и currencySymbol.

Выведите на экран итоговую сумму по окончании указанного периода с помощью System.out.println.

Выражение для вывода: "К окончанию срока сумма составит: " + amount + " " + currencySymbol".

public class Practicum {
public static void main(String[] args) {
    // Курсы валют
    double exchangeRateUSD = 94.8;
    double exchangeRateEUR = 103.8;
    double exchangeRateCNY = 13.1;

    // Процентные ставки
    double interestRateRUB = 7;
    double interestRateUSD = 1;
    double interestRateEUR = 0.8;
    double interestRateCNY = 1.5;

    // Вывод меню
    System.out.println("Введите номер валюты:");
    System.out.println("1 – рубли;");
    System.out.println("2 – доллары;");
    System.out.println("3 – евро;");
    System.out.println("4 – юани.");

    // посчитайте номер валюты и сохраните в переменную currency
    ...

    // объявите переменную exchangeRate для курса и проинициализируйте единицей
    ...
    // объявите переменную interestRate для процентной ставки
    ...
    // объявите переменную currencySymbol для обозначения аббревиатуры валюты
    ...

    /* обновите значения переменных exchangeRate, interestRate и currencySymbol
       в зависимости от номера валюты */
     
    if (currency == 1) { // если валюта – рубль,
        interestRate = ...; // устанавливаем соответствующую ставку,
        currencySymbol = ...; // устанавливаем код валюты
    } else if (currency == 2) { // если валюта – доллар,
        ... // устанавливаем курс обмена, ставку и код валюты
    ... // добавьте условия для евро и юаней
    } else {
        System.out.println("Ошибка: выбрана некорректная валюта. Валюта по умолчанию — рубли.");
        /* обновите переменные 
           interestRate и currencySymbol
           для валюты по умолчанию – рублей */
    }

    System.out.println("Введите начальную сумму в выбранной валюте:");
    double amount = NumberReader.getDouble();

    System.out.println("Введите количество лет для расчёта:");
    int years = NumberReader.getInteger();

    for (int i = 1; i <= years; i++) {
        amount = amount + amount * (interestRate / 100);
    }

    System.out.println("К окончанию срока сумма составит: " + amount + " " + currencySymbol);
}
}

Я сделал следующим образом. Не понимаю что такое currencySymbol:

public class Practicum {
public static void main(String[] args) {
    // Курсы валют
    double exchangeRateUSD = 94.8;
    double exchangeRateEUR = 103.8;
    double exchangeRateCNY = 13.1;

    // Процентные ставки
    double interestRateRUB = 7;
    double interestRateUSD = 1;
    double interestRateEUR = 0.8;
    double interestRateCNY = 1.5;

    // Вывод меню
    System.out.println("Введите номер валюты:");
    System.out.println("1 – рубли;");
    System.out.println("2 – доллары;");
    System.out.println("3 – евро;");
    System.out.println("4 – юани.");

    // посчитайте номер валюты и сохраните в переменную currency
    int currency = NumberReader.getInteger();

    // объявите переменную exchangeRate для курса и проинициализируйте единицей
    double exchangeRate = 1;
    // объявите переменную interestRate для процентной ставки
    double interestRate = 0;
    // объявите переменную currencySymbol для обозначения аббревиатуры валюты
    double currencySymbol = 0;


    /* обновите значения переменных exchangeRate, interestRate и currencySymbol
       в зависимости от номера валюты */
     
    if (currency == 1) { // если валюта – рубль,
        interestRate = interestRateRUB; // устанавливаем соответствующую ставку,
        currencySymbol = 0; // устанавливаем код валюты
    } else if (currency == 2) { // если валюта – доллар,
        interestRate = 1;
        exchangeRate = 94.8;
        currencySymbol = 0; // устанавливаем курс обмена, ставку и код валюты
    } else if (currency == 3) { // если валюта – доллар,
        interestRate = 0.8;
        exchangeRate = 103.8;
        currencySymbol = 0; // устанавливаем курс обмена, ставку и код валюты
    }
    else if (currency == 4) { // если валюта – доллар,
        interestRate = 1.5;
        exchangeRate = 13.1;
        currencySymbol = 0; // устанавливаем курс обмена, ставку и код валюты
    } 
    else {
        System.out.println("Ошибка: выбрана некорректная валюта. Валюта по умолчанию — рубли.");
        /* обновите переменные 
           interestRate и currencySymbol
           для валюты по умолчанию – рублей */
    }

    System.out.println("Введите начальную сумму в выбранной валюте:");
    double amount = NumberReader.getDouble();

    System.out.println("Введите количество лет для расчёта:");
    int years = NumberReader.getInteger();

    for (int i = 1; i <= years; i++) {
        amount = amount + amount * (interestRate / 100);
    }

    System.out.println("К окончанию срока сумма составит: " + amount + " " + currencySymbol);
}
}

Ответы (1 шт):

Автор решения: Damir Hakimof

Можете заменить ввод значений на статические методы вашего курса. Воспользовался enum, как писал Nowhere Man в комментарии под вашим вопросом.

public class Practicum {

  public enum Currency {
    RUB(1, "RUB", 1.0, 7.0),
    USD(2, "USD", 94.8, 1.0),
    EUR(3, "EUR", 103.8, 0.8),
    CNY(4, "CNY", 13.1, 1.5);

    private final int id;
    private final String symbol;
    private final double exchangeRate;
    private final double interestRate;

    Currency(int id, String symbol, double exchangeRate, double interestRate) {
      this.id = id;
      this.symbol = symbol;
      this.exchangeRate = exchangeRate;
      this.interestRate = interestRate;
    }

    public static Currency getById(int id) {
      for (Currency currency : values()) {
        if (currency.id == id) {
          return currency;
        }
      }
      System.err.println("Неизвестная валюта, используется валюта по умолчанию."); // Или что вам там нужно написать
      return RUB; // значение по умолчанию
    }

    public int getId() { return id; }
    public String getSymbol() { return symbol; }
    public double getExchangeRate() { return exchangeRate; }
    public double getInterestRate() { return interestRate; }
  }

  public static void main(String[] args) {
    // Вывод меню
    System.out.println("Введите номер валюты:");
    for (Currency currency : Currency.values()) {
        System.out.printf("%d – %s;%n", currency.getId(),
            currency.name().toLowerCase());
    }

    int currencyId = NumberReader.getInteger();
    Currency currency = Currency.getById(currencyId);

    double exchangeRate = currency.getExchangeRate(); // она будет использоваться?
    double interestRate = currency.getInterestRate();
    String currencySymbol = currency.getSymbol();

    System.out.println("Введите начальную сумму в выбранной валюте:");
    double amount = NumberReader.getDouble();

    System.out.println("Введите количество лет для расчёта:");
    int years = NumberReader.getInteger();

    for (int i = 0; i < years; i++) {
      amount += amount * (interestRate / 100); // подозрительная формула, может вы хотели сложный процент?
    }

    System.out.printf("К окончанию срока сумма составит: %f %s%n",
        amount, currencySymbol);
  }
}
→ Ссылка