Выход из вложенного оператора switch во внешний оператор switch

1

Я создал меню на Java, в котором у каждой опции есть другое меню. Я хочу знать, могу ли я выйти из внутреннего меню обратно в главное меню.

Изменение: добавлены опции главного меню

System.out.println("Main Menu");
    System.out.println("1. Hourly Employees");
    System.out.println("2. Salary Employees");
    System.out.println("3. Commission Employees");
    System.out.println("4. Weekly Calculations");
    System.out.println("5. Exit Program");
while(true){
    switch(choice){
        case 1: 
            HourlyEmployeeChoice HEC = new HourlyEmployeeChoice();
            //HourlyEmployeeChoice is a class with HEmployeeMenu() method 
            HEC.HEmployeeMenu();
            break;
        //case 2-4: to be added later
        case 5:
            System.out.println("Goodbye!");
            System.exit(0);
    }
    }

Это мое главное меню. Я только написал код для первого варианта и вариант для выхода.

public void HEmployeeMenu(){
    while(true){
        //submenu options
        int hourlyChoice = userChoice.nextInt();
            switch(hourlyChoice) {
                case 1: 
                    //code
                    break;
                case 2: 
                    //code
                    break;
                case 3:
                    //code
                    break;
                case 4: //exit submenu
                    return;
                default:
                    System.out.println("Please make a valid selection"); 
            }
    }
}

Это метод, в который я помещаю свой второй оператор switch внутри. Выбор опции 4 (выходное подменю) обновляется в подменю, а не в главном меню. Я думаю, что причиной этого является цикл while, который у меня есть для подменю. Я не хочу отключать этот параметр, потому что я хочу иметь возможность продолжать делать выбор после случаев 1-3.

Теги:
switch-statement
nested

1 ответ

4
Лучший ответ

Я считаю, что проблема, с которой вы сталкиваетесь, - это

while(true){
  // HERE
  switch(choice){

Вам нужно добавить код, чтобы снова получить choice, иначе он всегда будет тем, что вы впервые ввели.

Это перемещение отображения главного меню и ввода choice на что-то вроде

while(true){
  System.out.println("Main Menu"); // <-- Added based on your edit.
  System.out.println("1. Hourly Employees");
  System.out.println("2. Salary Employees");
  System.out.println("3. Commission Employees");
  System.out.println("4. Weekly Calculations");
  System.out.println("5. Exit Program");
  int choice = userChoice.nextInt(); // <-- HERE
  switch(choice){
  • 0
    Спасибо за быстрый ответ! Этот вид работал. Когда я выхожу из подменю и возвращаюсь в главное меню, параметры главного меню больше не появляются. Я могу набрать номер (1-5) и получить команду для этого номера из главного меню, но я бы предпочел, чтобы параметры главного меню появлялись снова после выхода из подменю.
  • 0
    @SeverelyConfused Возможно, вам стоит добавить этот дисплей. Вы не разместили его здесь, но, вероятно, это будет происходить после while (true) и перед int choice = userChoice.nextInt();
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню