简单的For循环 - 执行IMO的次数太多

Ben*_*Don 3 java for-loop

我正在处理"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)

我希望它运行一次然后等待下一个输入.

Erw*_*idt 9

我敢肯定你不只是按'T'和'P'.你按了"T" return'P' return.returnWindows平台上的a 由两个字符表示:回车符(\r)后跟换行符(\n).

所以输入'T' return你输入3个字符:

  1. 'T'
  2. \r
  3. \n

这就是为什么.

这不是Java的事情.如果你用C或Perl编写程序,那么就会发生同样的事情.

如果您刚刚使用System.in,则无法在大多数控制台上获得单独的按键 - 相反,return在按下之前您将无法获得任何数据.您可以编写GUI应用程序,而不是希望更详细地了解关键按键.