J'ai une méthode de base qui implémente le contrôle du menu d'application à l'aide du commutateur

 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;
    }
}

J'utilise cette méthode avec une boucle while pour appeler mon menu d'application

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

Comment puis-je déclencher la sortie du boîtier de commutation tout en conservant la structure de deux méthodes en même temps?

1
Alex 29 avril 2020 à 04:25

2 réponses

Meilleure réponse

Cela devrait fonctionner:

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;
        }
    }
}
2
cybersam 29 avril 2020 à 01:34

Comme indiqué dans les commentaires, vous pouvez lancer une exception, mais je n'aime généralement pas le faire si je ne suis pas dans un état d'erreur réel. Il est plus logique pour moi d'utiliser une valeur de retour et d'évaluer le résultat pour déterminer si le programme doit se terminer:

    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;
    }
0
pczeus 29 avril 2020 à 01:41