栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

发生这种情况的原因是,当您按Enter键时,System.in.read()将注册两个字符。应该将其用作扫描仪的更复杂版本,而不是使用扫描仪来执行Scanner.nextLine()或Scanner.nextInt()来返回字符串或整数,而是将所有内容作为char返回码。例如,如果我键入“
a”并按回车,它将在控制台输出97、13和10。但是,如果您使用(char)97将第一个数字(97)转换为一个char来进行转换,则会得到一个“
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。希望这对您有所帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574488.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号