gpt4 book ai didi

java - 按 Enter 触发 System.in.read() 两次?

转载 作者:行者123 更新时间:2023-12-01 06:23:40 25 4
gpt4 key购买 nike

由于某种原因,每当我在循环中使用System.in.read()时按ENTER键,代码就会立即执行两次。如果它不在循环中,它将执行一次!这是为什么?

这里是一个测试它的代码片段:

while(true) {
System.in.read();
System.out.println("I am supposed to print once, but I print twice!");
}

最佳答案

发生这种情况的原因是当您按 Enter 时,System.in.read() 将注册两个字符。这应该用作扫描仪的更复杂版本,而不是使用扫描仪,您可以在其中执行 Scanner.nextLine() 或 Scanner.nextInt() ,其中它将返回字符串或整数,它将所有内容返回为字符代码。例如,如果我输入“a”并按 Enter 键,它将在控制台上打印出 97、13 和 10。但是,如果您通过使用 (char) 97 将第一个数字 (97) 转换为字符来转换,您将得到一个“a”。现在,如果你看最后两个,那就是输入按钮。 13 是按下回车按钮,10 是释放回车按钮时创建新换行。因此,每当您按下按钮时,都会触发 System.in.read() ,从而在循环中运行代码。但是,当您释放时,它也会再次执行此操作,因为您刚刚通过释放 Enter 按钮再次触发了它,这也会触发 System.in.read()。因此,为了解决这个问题,请执行以下操作:

while(true) {
if(System.in.read() == 13) {
System.out.println("I now only execute once like I should! :D");
}
}

如果您愿意,也可以执行 10,但我更喜欢使用 13。希望这会有所帮助!

关于java - 按 Enter 触发 System.in.read() 两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28533117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com