我正在使用 java.util.Scanner 来处理诸如 nextInt() 之类的事情,只要我使用 java.lang.Readable(一个也是唯一的构造函数参数),一切都可以正常工作。但是,当我改为使用 InputStream 时, Scanner.nextInt() 永远不会返回。你知道为什么吗?
我的 InputStream 实现如下所示:
private static class ConsoleInputStream extends InputStream {
...
private byte[] buffer;
private int bufferIndex;
public int read() throws IOException {
...
while (...) {
if (buffer != null && bufferIndex < buffer.length) {
return buffer[bufferIndex++]; // THE COMMENT!
}
...
}
...
}
}
当我通过 THE COMMENT 打印数据时,我(正确地)得到诸如“12\n”的“1”、“2”、“\n”之类的东西。是否有一些我不知道的扫描仪连接会导致这种行为?