【发布时间】:2010-01-08 23:03:00
【问题描述】:
我正在使用 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”之类的东西。是否有一些扫描仪连接,我不知道,那个导致这种行为?
【问题讨论】:
-
为什么要在字节级别而不是字符级别执行此操作?
标签: java inputstream java.util.scanner