如何一次用Java字符接收用户输入,包括空格?

时间:2019-01-24 03:01:28

标签: java io character java.util.scanner inputstream

我想一次从键盘接收一个字符。输入可以包含空格,可以是任意长度,并且不需要特殊字符来标记其结尾。

问题是,如果我使用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。

0 个答案:

没有答案