0

最近、コードを次のように変更しました

  • STDINから入力を取りながら、からに移動しScannerましたBufferedInputStream
  • BufferedReaderまた、どのがからの入力を受け取るかについても読みましたInputStreamReader。これは、入力を取得するためInputStreamReaderに使用できます。System.inSTDIN
  • BufferedInputStreamread()目的に応じてさらに解析する必要があるメソッドがあります。

私の場合、最初に整数(たとえばn)を入力として受け取る必要があります。STDINその後、afor loopはn個の文字列を入力として受け取ります。これらの文字列の最大文字数は100,000文字です。

質問は次のとおりです。そのうちのどれがScanner、私の目的に対してより良いパフォーマンスを発揮しますかBufferedInputStreamBufferedReader

4

2 に答える 2

2

あなたの場合はBufferedReaderを使用します。文字列にはかなりの数の文字が含まれているため、Scannerよりもはるかに高速になります。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

//To get an integer
int N = Integer.parseInt(br.readLine());

//To get a string.
String line = br.readLine()
于 2012-10-06T17:42:34.513 に答える
2

Scanner は、実行時のユーザーからの入力パラメーターの受け入れを簡素化するように設計されています。これは、scanf()/getc()/cin に相当する Java です。「Reader」は文字データの読み取りに使用され、「Stream」はストリーミング データに使用されます。スキャナーはあなたの目的に最適です。コーディングと使用が簡単だからです。

于 2012-03-28T08:17:34.027 に答える