我正在处理"Java:初学者指南第6版"中的一段代码.我正在讨论实现For循环的不同方法.
// Loop until an S is typed.
System.out.println("Press S to stop.");
for(int i = 0; (char) System.in.read() != 'S'; i++)
System.out.println("Pass #" + i);
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 为什么在要求新的键盘输入之前执行3次?当我输入任何字符时,它输出:
Press S to stop.
T
Pass #0
Pass #1
Pass #2
P
Pass #3
Pass #4
Pass #5
Run Code Online (Sandbox Code Playgroud)
我希望它运行一次然后等待下一个输入.
我敢肯定你不只是按'T'和'P'.你按了"T" return'P' return.returnWindows平台上的a 由两个字符表示:回车符(\r)后跟换行符(\n).
所以输入'T' return你输入3个字符:
\r\n这就是为什么.
这不是Java的事情.如果你用C或Perl编写程序,那么就会发生同样的事情.
如果您刚刚使用System.in,则无法在大多数控制台上获得单独的按键 - 相反,return在按下之前您将无法获得任何数据.您可以编写GUI应用程序,而不是希望更详细地了解关键按键.