В приведенном ниже коде я использовал два сканера: один в метод executeAction () и один в методе getTicketNumber ().Я использовал try с ресурсами, и однажды, когда я вхожу в метод getTicketNumber (), он работает нормально, и однажды, когда элемент управления возвращается и возвращается к executeAction (), я получаю No No Element Exception, когда он выполняет строку scanner.nextInt (),Я хотел продолжить этот процесс, пока я не нажму выход.Я предполагаю, что это связано с использованием нескольких сканеров, так как, если я не вхожу в метод getTicketNumber (), он работает нормально.Есть идеи?
private void performAction() {
int choice = 4;
System.out.println("Hi User");
System.out.println("What do you want to do ");
try (Scanner scanner = new Scanner(System.in)) {
do {
System.out.println("1. Book ticket");
System.out.println("2. Cancel ticket");
System.out.println("3. Check status");
System.out.println("4. Exit");
System.out.println("Enter your choice");
choice = scanner.nextInt();
System.out.println();
doActionBasedOnChoice(choice);
System.out.println();
} while (choice != 4);
} catch (InputMismatchException e) {
System.out.println("Please enter a valid choice");
}
}
private void doActionBasedOnChoice(int choice) {
switch (choice) {
case 1:
ticketReservation.bookFlight();
break;
case 2:
System.out.println("Please enter your ticket number ");
int ticketNumber = getTicketNumber();
ticketReservation.cancel(ticketNumber);
break;
case 3:
ticketReservation.checkConfirmedListStatus();
break;
case 4:
System.out.println("Thank you ");
break;
default:
break;
}
}
private int getTicketNumber() {
try (Scanner scanner = new Scanner(System.in)) {
int choice = scanner.nextInt();
return choice;
} catch (InputMismatchException e) {
System.out.println("Please enter a valid ticekt number");
}
return 0;
}