Напишите программу, которая спросит пользователя о количестве билетов и итоговой сумме
Напишите программу, которая спросит пользователя о количестве билетов для взрослых, количестве билетов для детей, о том, хотят ли они зарезервировать или сделать общий прием, и есть ли у них радио-ваучер для использования. Рассчитать стоимость заказа.
Есть два уровня билетов, зарезервированные по 55 долларов США каждый или общие входные билеты по 35 долларов США каждый. Дети до 12 лет - наполовину. На местной радиостанции работает спец. Если вы позвоните, они вышлют вам ваучер, который даст вам скидку 20%.
Все заказы на сумму более 200 долларов США получают скидку 10% от окончательной цены (после применения других скидок), а заказы на сумму более 400 долларов США получают скидку 15%.
Мой код до сих пор...
public static void main(String[] args) {
// variables
int adultTix;
int childTix;
int GENERAL_ADMISSION = 35;
int RESERVED = 55;
double radioDiscount = .20;
double ticketTotal = 0;
Scanner scan = new Scanner(System.in);
System.out.println("How many adult tickets?");
adultTix = scan.nextInt();
System.out.println("How many kids tickets?");
childTix = scan.nextInt();
scan.nextLine();
System.out.println("Reserved tickets are $55 each and General Admission is $35."
+ " Would you like Reserved or General Admission? (enter GA or RE only):");
String tixType = scan.nextLine();
if (tixType == "GA" || tixType == "ga")
ticketTotal = ((adultTix * GENERAL_ADMISSION) + ((childTix * GENERAL_ADMISSION) / 2));
else if (tixType == "RE" || tixType == "re")
ticketTotal = ((adultTix * RESERVED) + ((childTix * RESERVED) / 2));
System.out.println("Do you have a radio voucher? (enter yes or no):");
String radioQ = scan.nextLine();
if (radioQ == "yes")
System.out.print("With the radio discount, you will save 20%!");
if (radioQ == "no")
System.out.println("No radio discount.");
double radioT;
radioT = ((ticketTotal - (ticketTotal * radioDiscount)));
if (radioT >= 200 && radioT < 400)
System.out.println("With a 10% discount, your total is: $"
+ (radioT * .9));
else if (radioT > 400)
System.out.println("With a 15% discount, your total is: $"
+ (radioT * .85));
scan.close();
}
}
Правильно задает все вопросы, но не возвращает результат. Это простая программа на Java, поэтому я хотел бы получить самый простой ответ
2 ответа
Пара вопросов:
При проверке на равенство между объектами, вы всегда должны использовать метод equals и теперь "==", что означает, что вы сравниваете ссылку на два объекта. Так что измените следующее из
if (tixType == "GA" || tixType == "ga")
С
if (tixType.equalsIgnoreCase("ga"))
То же самое для сравнения других строк.
После того, как вы спросите, есть ли у пользователя радио-ваучер или нет, вам следует только выполнить вычисления, связанные с радио-ваучером, например:
if (radioQ == "yes")//use equalsIgnoreCase method of String System.out.print("With the radio discount, you will save 20%!"); radioT = ((ticketTotal - (ticketTotal * radioDiscount))); if (radioT >= 200 && radioT < 400) System.out.println("With a 10% discount, your total is: $" + (radioT * .9)); else if (radioT > 400) System.out.println("With a 15% discount, your total is: $" + (radioT * .85)); //apply discount on ticket total? } else ...
Проблема в том, что ни один из ваших if
с и else
Они стреляют правильно, потому что вы сравниваете свои строки неправильно.
Вместо if (str == "value")
тебе нужно if (str.equals("value"))
везде. В тех случаях, когда вы хотите сопоставление без учета регистра, например if (str == "value" || str == "VALUE")
тебе нужно if (str.equalsIgnoreCase("value"))
вместо.
Пожалуйста, ознакомьтесь Как сравнить строки в Java? для получения дополнительной информации