nextInt()などにjava.util.Scannerを使用していますが、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!
}
...
}
...
}
}
コメントでデータを印刷すると、(正しく)「12 \ n」の「1」、「2」、「\ n」などが表示されます。この動作の原因となる、知らないうちにスキャナーへの接続がありますか。 ?