В настоящее время я выполняю задание для простой системы создания билетов, и я озадачен тем, как цикл вычисляется неправильно.
По сути, программа рассчитывает общую стоимость покупки билета в местном кинотеатре, однако, когда пользователь вводит конкретный тип билета и количество, цикл должен сбрасываться, пользователь вводит второй тип билета и количество, и этот процесс должен повторяться любое количество раз, пока пользователь не обрежет цикл, и не будет представлена общая расчетная стоимость для всех циклов.
Мне помогли здесь и лично мой код, и я озадачен, почему этот цикл не работает должным образом! Один цикл рассчитывается идеально, однако второй цикл не работает.
В настоящее время я пытался использовать перечислимый класс, который помог с другими проблемами, связанными с вычислением билетов.
package ticketingsystem
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ticketingsystem {
/**
*
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String order, again;
int quantity = 0;
double totalPrice;
totalPrice = 0;
TicketType ticketType;
System.out.println(" ");
System.out.println("Welcome to the cinemas!");
System.out.println(" ");
System.out.println("MAIN MENU");
System.out.println(" ");
System.out.println("The cinema has the following options");
System.out.println(" ");
System.out.println("1 = Child (4-5 yrs)");
System.out.println("2 = Adult (18+ yrs)");
System.out.println("3 = Senior (60+ yrs)");
do {
System.out.println(" ");
System.out.print("Enter your option: ");
order = br.readLine();
switch (order.toLowerCase()) {
case "1":
ticketType = TicketType.child;
break;
case "3":
ticketType = TicketType.senior;
break;
default:
ticketType = TicketType.adult;
break;
}
System.out.print("Enter the number of tickets: ");
quantity = Integer.parseInt(br.readLine());
totalPrice += ticketType.getPrice() * quantity;
System.out.printf("You are purchasing %s tickets at %.2f \n", ticketType, ticketType.getPrice());
System.out.print("Do you wish to continue? (Y/N) : ");
again = br.readLine();
}
while (again.equalsIgnoreCase("y"));
System.out.println(" ");
System.out.printf("Total Price : $%.2f \n", totalPrice);
}
}
Я также связал цены на билеты с enum-классом, детали приведены ниже:
package ticketingsystem;
/**
*
* @author
*/
enum TicketType {
child(18), adult(36), senior(32.5);
TicketType(double price) {
this.price = price;
}
private double price;
public double getPrice() {
return price;
}
}
Ожидаемый результат - это цикл, который будет повторяться бесконечное число раз, при этом сохраняются предыдущие вычисленные значения столько, сколько пожелает пользователь.
Нет сообщения об ошибке, однако система не выводит после ввода типа и количества тикетов во время второго цикла.