Переключить цикл - PullRequest
       35

Переключить цикл

1 голос
/ 29 апреля 2020

У меня есть метод basi c, который реализует управление меню приложения с помощью переключателя

 public void applicationMenu(String input) {
    switch (input) {
        case "1":
            findGroups();
            break;
        case "2":
            findStudentsByCourseName();
            break;
        case "3":
            addNewStudent();
            break;
        case "4":
            deleteStudentById();
            break;
        case "5":
            addStudentToCourse();
            break;
        case "6":
            removeStudentCourse();
            break;
        default:
            printDefault();
            break;
    }
}

Я использую этот метод некоторое время l oop для вызова меню моего приложения

public void callMenu() {
        boolean exit = false;
        while (!exit) {
            viewProvider.printMainMenu();
            String input = viewProvider.readString();
            if (input.equals("7")) {
                exit = true;
            }
            applicationMenu(input);
        }
    }

Как я могу инициировать выход из регистра переключателя, но сохранить структуру двух методов одновременно?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Это должно работать:

public boolean applicationMenu(String input) {
    boolean shouldContinue = true;
    switch (input) {
        case "1":
            findGroups();
            break;
        case "2":
            findStudentsByCourseName();
            break;
        case "3":
            addNewStudent();
            break;
        case "4":
            deleteStudentById();
            break;
        case "5":
            addStudentToCourse();
            break;
        case "6":
            removeStudentCourse();
            break;
        case "7":
            shouldContinue = false;
            break;
        default:
            printDefault();
            break;
    }
    return shouldContinue;
}

...

public void callMenu() {
    while (true) {
        viewProvider.printMainMenu();
        String input = viewProvider.readString();
        if (!applicationMenu(input)) {
            break;
        }
    }
}
0 голосов
/ 29 апреля 2020

Как указано в комментариях, вы можете выдать исключение, но я, как правило, не люблю этого делать, если у меня нет фактического состояния ошибки. Для меня имеет больше смысла использовать возвращаемое значение и оценивать результат, чтобы определить, должна ли программа завершиться:

    public void callMenu() {
        boolean exit = false;
        while (!exit) {
            viewProvider.printMainMenu();
            exit = applicationMenu(viewProvider.readString());
        }
    }



     public boolean applicationMenu(String input) {
        switch (input) {
            case "1":
                findGroups();
                return false;
            case "2":
                findStudentsByCourseName();
                return false;
            case "3":
                addNewStudent();
                return false;
            case "4":
                deleteStudentById();
                return false;
            case "5":
                addStudentToCourse();
                return false;
            case "6":
                removeStudentCourse();
                return false;
            case "7":
                return true;
            default:
                printDefault();
        }
        return false;
    }
...