powershell DoWhile循环Java输出错误
我正在阅读赫伯特·席尔德的《Java初学者指南第六版》
在Windows Powershell中使用Windows 7 Home Premium 64位和Java 1.8.0_73
当我编译这个练习时(没有任何编译器警告或错误):
class DoWhileDemo {
public static void main( String[] args )
throws java.io.IOException {
char ch;
do {
System.out.print( "Press a key followed by ENTER: " );
ch = (char) System.in.read();
} while( ch != 'q' );
}
}
当我用“java DoWhileDemo”运行它时
Press a key followed by ENTER: f
Press a key followed by ENTER: Press a key followed by ENTER: Press a key followed by ENTER: q
程序按预期退出(当我点击'q'并按ENTER键时),但“按a键后按ENTER键:”的多次打印没有成功
知道为什么会这样吗
# 1 楼答案
声明
读入一个字符。当用户按
q
和enter
时,会向代码发送三个字符:在Windows系统上。因此,在输入队列中没有任何内容,代码停止读取之前,您可以在循环中再获得两个paass
在Linux上,只会看到一个额外的提示,因为在这种情况下,只会发送两个字符(
q\n
)如果您想处理整行代码(看起来是这样),那么必须将
System.in
包装在BufferedReader
中,这样您就可以调用readLine()