Мы просили сделать программу, используя инструкцию switch.
Вот мой код:
double price = 0, totalPrice;
System.out.print("Enter the number of your choice: ");
int optionNumber = Integer.parseInt(kb.readLine());
switch(optionNumber)
{
case 1:
price = 190.00;
break;
case 2:
price = 410.00;
break;
default:
System.out.println("ERROR: Invalid number!");
break;
}
System.out.print("Enter quantity: ");
int quantity = Integer.parseInt(kb.readLine());
totalPrice = price * quantity;
Таким образом, в основном пользователь вводит определенный номер, и он будет иметь разные цены... внутри операторов switch. но если пользователь вводит неправильный номер, он отображает сообщение об ошибке, и я не хочу, чтобы пользователь вводил количество, которое будет исполнено после оператора switch. нам не разрешено использовать какие-либо методы или функции, и я не хочу повторно вводить код следующим образом:
System.out.print("Enter the number of your choice: ");
int optionNumber = Integer.parseInt(kb.readLine());
switch(optionNumber)
{
case 1:
price = 190.00;
System.out.print("Enter quantity: ");
int quantity = Integer.parseInt(kb.readLine());
totalPrice = price * quantity;
System.out.print("Total price: " + totalPrice);
break;
case 2:
price = 410.00;
System.out.print("Enter quantity: ");
int quantity = Integer.parseInt(kb.readLine());
totalPrice = price * quantity;
System.out.print("Total price: " + totalPrice);
break;
default:
System.out.println("ERROR: Invalid number!");
break;
}
есть ли другой способ не использовать, если иначе, методы, функции или кодирование неоднократно? ЛЮБАЯ ПОМОЩЬ БУДЕТ ПРИЗНАНА.
Вы можете использовать логический флаг и сделать его ложным, если выбрана неверная опция.
Тогда только спросите пользователя, если флаг имеет значение true.
System.out.print("Enter the number of your choice: ");
int optionNumber = Integer.parseInt(kb.readLine());
boolean flag = true;
switch (optionNumber) {
case 1:
price = 190.00;
break;
case 2:
price = 410.00;
break;
default:
flag = false;
System.out.println("ERROR: Invalid number!");
break;
}
if (flag) {
System.out.print("Enter quantity: ");
int quantity = Integer.parseInt(kb.readLine());
totalPrice = price * quantity;
System.out.print("Total price: " + totalPrice);
}
Используйте как это:
while(!valid option)
//do this stuff
Используйте флаг и установите для него значение true, если введенный номер действителен, поэтому он перейдет к следующей инструкции; иначе попросите снова ввести.
Выбросить исключение
default:
throw new InvalidArgumentException("Invalid number!");
См. Также InvalidArgumentException vs UnexpectedValueException
Вы можете просто удалить default
из оператора switch
и проверить, равна ли цена 0 после оператора switch
double price = 0, totalPrice;
System.out.print("Enter the number of your choice: ");
int optionNumber = Integer.parseInt(kb.readLine());
switch(optionNumber)
{
case 1:
price = 190.00;
break;
case 2:
price = 410.00;
break;
}
if (price == 0)
{
System.out.println("ERROR: Invalid number!");
}
else
{
System.out.print("Enter quantity: ");
int quantity = Integer.parseInt(kb.readLine());
totalPrice = price * quantity;
System.out.print("Total price: " + totalPrice);
}
Это не позволяет вам добавлять ненужные переменные (например, логический флаг), если у вас уже есть (price
) со значением по умолчанию 0
которым вы можете проверить.
if else
не вариант (не знаю, почему трудно)
if/else
многократно, как внутри каждого case
. Вот как я понял вопрос в любом случае. Я думаю, что единственное утверждение if/else
будет в порядке, как я читаю вопрос. "есть ли другой способ не использовать if else, методы, функции или кодирование повторно ?"
return
при ловле поdefault
вариант?