私は次のコードを持っています:
public class Interface {
public void exec(){
Scanner scanner = null;
Integer count = 0;
while( count < 4 ){
_inputStream.read();
scanner = new Scanner( _inputStream );
String inputLine = scanner.nextLine();
_inputStream.reset();
System.out.println( inputLine );
}
scanner.close();
}
public void setInputStream( InputStream inputStream ){
_inputStream = inputStream;
}
}
次のコードでテストしようとしています。
public void testInterface() {
Interface ui = new Interface();
ui.exec();
ui.setInputStream( new ByteArrayInputStream( "This is the first prompt".getBytes( Charset.defaultCharset() ) ) );
ui.setInputStream( new ByteArrayInputStream( "This is the second prompt".getBytes( Charset.defaultCharset() ) ) );
ui.setInputStream( new ByteArrayInputStream( "This is the third prompt".getBytes( Charset.defaultCharset() ) ) );
ui.setInputStream( new ByteArrayInputStream( "This is the fourth prompt".getBytes( Charset.defaultCharset() ) ) );
}
私が取得したい出力は
This is the first input
This is the second input
This is the third input
This is the fourth input
しかし、私が実際に得ているのは
his is the first input
his is the first input
his is the first input
his is the first input
問題は、少なくとも私が知る限り_inputStream
、ループの各反復でがクリアされていないことです。つまり、read()
関数は新しいデータストリームを待つのではなく、すぐに戻ってきます。ただし、読み取るたびにストリームをリセットしているので、なぜそうなるのかわかりません。
_inputStream.read()
ループが実行されるたびにユーザー入力を待機するようにコードを修正するにはどうすればよいですか?