java.util.scannerクラスは、基本的なデータ型と文字列を解析する単純なテキストスキャンクラスです。基本的に正規表現を使用して、さまざまなデータ型を読み取ります。
キャラクターシーケンスを効率的に読み取るために、java.io.BufferedReaderクラスは、文字入力ストリームと文字バッファーからテキストを読み取ります。
2つのクラスの違いは次のとおりです。
nextline()がnextxxx()で使用されるとき、スキャナークラスの使用の問題は何ですか?
次のコードの出力を推測してみてください。
// scanner classimport java.util.scanner; class differ {public static void main(string args []){scanner scn = new scanner(system.out.out.println( "integer"); int a = scn.nextint(); system.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out. scn.nextline(); system.out.printf( "入力した: - " + a + "" + "と" + b);}}}入力:
50
オタク
出力:
整数を入力します
文字列を入力します
入力しました:-50と名前
BufferReaderクラスを使用して、同じ入力を使用してみましょう
// BufferedReader Classimport Java.io。 integer.parseint(br.readline()); system.out.println( "Enter a string"); string b = br.readline(); system.out.printf( "入力: - " + a + "および名前" + b);}}}}
入力:
50
オタク
出力:
整数を入力します
文字列を入力します
入力しました:-50と名前はオタクです
スキャナークラスでは、7つのnextxxx()メソッドの後にnextline()メソッドを呼び出すと、nextline()メソッドはコンソールから何も読み取ることができず、このカーソルはコンソールに入りません。この手順をスキップします。 NextXxx()メソッドは、これらのメソッド、nextInt()、nextfloat()、nextbyte()、nextshort()、nextdouble()、nextlong()、next()です。
BufferReaderクラスにはそのような問題はありません。この問題はスキャナークラスでのみ発生します。なぜなら、NextXXX()メソッドはNewLine文字***を無視しますが、NextLine()はそれを無視しないためです。 Nextxxx()メソッドとnextline()メソッドの間で複数のnextline()メソッドを使用すると、この問題は発生しません。 nextline()がnewline文字を消費するためです。このプログラムを作成する正しい方法(http://code.geeksforgeeks.org/cerahd)を参照できます。この問題は、c/c ++のscanf()メソッドと同じです(http://www.geeksforgeeks.org/problem-with-scanf-when-when-is-fgetsgetsscanf-after-it/)。
その他の違い:
•BufferedReaderは同期をサポートしますが、スキャナーはサポートしていません。マルチスレッドプログラムに対処する場合は、BufferedReaderを使用する必要があります。
•BufferedReaderには、スキャナーに比べて十分なバッファメモリがあります。
•スキャナーには、バッファレッドリーダー(8kbバイトバッファリング)に比べてバッファー(1kb文字バッファリング)がほとんどありませんが、これで十分です。
•BufferedReaderはスキャナーよりも少し高速です。スキャナーは入力データのクラス解析を実行し、バッファレッドリーダーは文字のシーケンスを読み取るだけです。
上記は、編集者が紹介したJavaのスキャナークラスとBufferReaderクラスの違いです(非常に詳細)。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!