我正在尝试使用switch
的以下System.in.read()
语句:
char ch1, ch2;
ch1 = (char) System.in.read();
switch(ch1) {
case 'A':
System.out.println("This A is part of outer switch.");
ch2 = (char) System.in.read();
// ch2 = 'A';
switch(ch2) {
case 'A':
System.out.println("This A is part of inner switch");
break;
case 'B':
System.out.println("This B is part of inner switch");
break;
} // end of inner switch
break;
case 'B': // ...
ch2 = (char) System.in.read();
似乎没有被执行,除非明确声明
ch2 = 'A'
,否则不会执行内部的switch
语句。那么如何使第二个read()
工作呢? 最佳答案
好的,必须做一些实验,但是我敢打赌,输入第一个字符后您要按Enter键吗?如果是,则将ch2设置为该击键。
您可以做的就是告诉输入流,在获得第一个字符后立即通过System.in.skip(1)
跳过输入流。然后,调用ch2将可以正常工作。可能有很多更好的方法来读取输入,但是由于每次输入一个字符时,您都要输入两个,因此需要跳过最后一个。
所以重申一下:
ch1 = (char) System.in.read();
System.in.skip(1);//Skip the next keystroke, which is enter
switch(ch1) {
case 'A':
System.out.println("This A is part of outer switch.");
ch2 = (char) System.in.read();
// ch2 = 'A';
switch(ch2) {