我想一次从键盘接收一个字符。输入可以包含空格,可以是任意长度,并且不需要特殊字符来标记其结尾。
问题是,如果我使用InputStreamReader
,它不知道什么时候到达流的末尾,因为没有限制的缓冲区大小,也没有特殊字符让它知道输入何时结束到达了。
当我发现InputStreamReader.read() == -1
意味着输入已经结束时,我以为它可以工作。但是,放置一个if语句来检查InputStreamReader.read() == -1
是否不起作用,因为它永远不会达到这种情况。
InputStreamReader userInput = new InputStreamReader(System.in);
boolean end = false;
while(! end) {
int c = userInput.read();
if(c == -1) {
end = true;
} else {
System.out.println(c);
}
}
使用上面的代码,我希望用户在控制台中输入输入后,它会依次打印每个字符的ASCII码,然后终止。
但是,由于从不满足if条件,程序将继续运行并接收输入。
如何在到达输入结束时让程序知道?
编辑:我发现我的作业要求允许我使用EOF字符标记输入的结尾,但是当我不先按Enter键将其输入控制台时,程序将终止而不读取任何先前的输入。我正在使用IntelliJ作为我的IDE。