-1

次のコードがあります。

public class Interface {

    public void exec(){
        try {
            _inputStream.read();
            BufferedReader br = new BufferedReader( new InputStreamReader( _inputStream ));
            System.out.println( br.readLine() );
        } catch (IOException e) {
        }

    }

    public void setInputStream( InputStream inputStream ){
        _inputStream = inputStream;
    }

    private InputStream _inputStream;

}

public class Run {

    public static void main(String[] args) {
        Interface ui = new Interface();
        ui.setInputStream( new ByteArrayInputStream( "2 4 N".getBytes( Charset.defaultCharset() ) ) );
        ui.exec();
    }
}

ただし、このコードを実行するたびに、印刷されるのは

" 4 N"

最初の文字が失われました。ストリームに何が起こっているのか、それを防ぐにはどうすればよいですか?

4

2 に答える 2

7
_inputStream.read();

に行かない 1 文字を消費しBufferedReaderます。あなたはそのキャラクターを自分で捨てました。その行を削除するだけで問題ありません。

于 2013-02-10T23:46:10.720 に答える
2

あなたが_inputStream.read();最初に電話しているからです。その行を削除するだけです。

于 2013-02-10T23:47:49.500 に答える