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');
}
}
当我做出选择时,它会做出类似的事情:
1
2
1
228
1
2
1
2
2
556
1
2
1
2
所以我无法理解为什么Java在完成案例后两次向我显示菜单。有什么建议?
答案 0 :(得分:2)
当您按Enter
时,此行会读取您键入的每个字符,包括新行'\n'
ch = (char) System.in.read();
一个简单的解决方案是进行另一次读取并丢弃结果。 E.g。
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');