大家好。我在使用 Java 中的 switch/case 菜单时遇到了麻烦。
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 在完成案例后向我显示了两次菜单。有什么建议么?
最佳答案
此行会读取您输入的每个字符,包括按 Enter 键时的新行 '\n'
ch = (char) System.in.read();
一个简单的解决方案是再次读取并丢弃结果。例如
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');
关于java - Java 中的 Switch/Case 控制台菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533236/