java - system.input.read() != -1 循环永不停止
问题描述
我正在编写一段代码,它接受一个输入字符串并只输出选定的字符。我被要求使用 system.input.read 否则我只会使用 scan 或类似的东西。这是我的代码:
import java.io.IOException;
public class testing {
public static void main(String[] args) throws IOException {
int i;
String answer = "";
while ((i = System.in.read()) != -1) {
if (i == 65 || i == 67 || i == 71 || i == 84) {
answer = answer + (char)i;
}
//System.out.println(answer);
}
//System.out.println(answer);
}
}
如果我把
System.out.println(answer);
在 while 循环中,它会打印内容,但相同的语句在 while 循环之外什么也不做,即使我用“12345”启动字符串——如果它不在循环中,它将永远不会执行打印语句。因此,据我所知,可能只有一个问题:循环从未停止。
但是循环应该在到达输入字符串中的最后一项后停止。这
System.input.read()
方法假设在读取所有条目并结束循环后返回 -1(我将i != -1
其作为结束条件),但显然它没有。
谁能向我解释我做错了什么以及为什么这是错误的。这太奇怪了,我再也不想遇到同样的问题了。
解决方案
推荐阅读
- c# - Azure C# Cosmos DB:插入数据时缺少必需的属性“id”
- swagger-ui - Springfox swagger-ui 3.0.0 不调出 swagger-ui.html 页面
- node.js - 如何保存 jwt 令牌以在下一个请求中使用?在nodejs中
- java - 如果发生 StackOverflowError,有没有办法在 Java 中查看“堆栈内存转储”
- node.js - 如何在 NodeJS 中模拟嵌套依赖项
- speech-to-text - .opus 音频文件的谷歌语音到文本配置是什么样的
- android - 如何使用地图功能将列表从一种类型更改为另一种类型
- c# - HTTP 函数 C# SQL 异步
- python - 将 json 文件转换为 csv
- go - 将特定变量添加到 api 请求的 switch 语句