Switch/Case Java 中的控制台菜单
Switch/Case console menu in Java
大家好。 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 中的 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');