Commutateur / Cas console menu en Java


Sup, tout le monde. J'ai eu un problème avec le menu switch/case en Java.

class ConsoleMenu{
    ConsoleMenu(){
    }
    void ShowMenu(){
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
    }
}
public class Main {
    public static void main(String[] args) throws java.io.IOException {
        ConsoleMenu cs = new ConsoleMenu();
        char ch;
        do {
            cs.ShowMenu();
            ch = (char) System.in.read();
            switch (ch) {
                case '1':{
                    System.out.println("228");
                    break;}
                case '2':{
                    System.out.println("556");
                    break;}
            }
        } while (ch != '0');
    }
} 

Quand je fais un choix, il fait quelque chose comme ça:

1
2
1
228
1
2
1
2
2
556
1
2
1
2

Donc je ne peux pas undestand pourquoi Java me montre le menu deux fois après avoir terminé le cas. Toutes les suggestions?

Author: genesi5, 2015-11-05

1 answers

Cette ligne lit chaque caractère que vous tapez, y compris la nouvelle ligne '\n' lorsque vous appuyez sur Entrée

ch = (char) System.in.read();

Une solution simple serait de faire une autre lecture et de rejeter le résultat. Par exemple

    do {
        cs.ShowMenu();
        ch = (char) System.in.read();
        switch (ch) {
        case '1': {
            System.out.println("228");
            break;
        }
        case '2': {
            System.out.println("556");
            break;
        }
        }
        System.in.read();
    } while (ch != '0');
 1
Author: Manos Nikolaidis, 2015-11-04 22:32:48