java - IO 延迟导致 JAVA 中 for 循环中的 2 次迭代
问题描述
我正在测试一段代码,遇到了一些有趣的事情,我需要一些专家的意见。
一个简单的程序在输入时停止循环,s
但似乎在每个输入上循环迭代两次,我猜这是因为 IO 延迟。如果我错了,请纠正我。
public static void main(String[] args) throws java.io.IOException {
int i;
System.out.println("Type s to stop.");
for(i = 0; ; i++) {
char value = (char) System.in.read();
if(value=='s'){
break;
}
System.out.println("Pass # " + i);
}
}
输出:
解决方案
当您输入一个字符a
作为输入时,实际上输入了两个字符。
a
\n
但是,当您阅读 a 时char
,它会一个接一个地读取。因此,它循环了两次。
推荐阅读
- linux - EGLFS QML 屏幕未旋转
- visual-studio-code - 如何在 VS Code 编辑器中使当前行加粗?
- c# - How to move cursor back 1 reading with FileStream?
- php - 在 PHP 中获取格式为 1:2:3:4 的 MySQL 数据
- python - 在python中创建(引理,NER类型)的元组,Nlp问题
- discord - 公会缺少图标时出现嵌入错误?
- spring-boot - 使用 Spring Boot 连接到远程 jms 队列
- java - 使用 ARCore 和 IMU 传感器生成世界运动和位置数据
- reactjs - ReactJS - 在 2 个不同的组件之间淡入淡出
- javascript - 有没有办法在反应中渲染组件内部的路线?