Задача по циклам курса Я.Практикум 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 шт):
Можете заменить ввод значений на статические методы вашего курса. Воспользовался 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);
}
}