0

STDIN私からの入力を読み取るために、常にScannerオブジェクトを使用しました。最近、BufferedInputStream が入力を読み取る最速の方法であるとBufferedInputStream ここで読みました。Scannerはさまざまな方法があります ( to read integer nextInt()、 to read byte nextByte()、 to readstring next()など)。現在、いくつかの文字列 (最大 100000 文字) といくつかの整数を読み取っています。これらの整数によると、 から入力を受け取る for ループをさらに実行しますSTDIN。以下は、私が今まで使用しているコードスニペットです-

    Scanner sc = new Scanner(System.in);
    int numOfStr = sc.nextInt();
    String inputStr[] = new String[numOfStr];
        for (int i = 0; i < numOfStr; i++) {
                inputStr[i] = sc.next();
        }
    }

However with BufferedInputStream we have only read() to read input. So how can i differentiate among the inputs? Can somebody please write down the BufferedInputStream code equivalent to the above Scanner ? Should i use StringTokenizer class to tokenize to data which i am getting from read() ? Will this not make the whole stuff (reading input from the STDIN) more slower than Scanner?

4

2 に答える 2

1

BufferedInputStreamはデータを解析せず、データを読み込むだけです。バッファリングされたリーダーをスキャナークラスに渡し、そこから解析することができます。

于 2012-03-27T16:54:57.257 に答える
0

Javaチュートリアルのストリームに関する章を見てください。さまざまな種類のストリーム、その目的、および使用法について説明します。

ただし、ユーザーからの入力を読み取るときに、読み取り操作を高速にする必要がある理由がよくわかりません。ユーザーは、キーボードからの入力を読み取るために使用する方法よりもはるかに遅くなります (桁違いに遅くなります)。

于 2012-03-27T17:02:41.373 に答える