こんにちは、私はJava
が初めてで、コンソールでユーザー入力を読み取るための最良の選択は何かを知りたいと思っています。
Console console = System.console();
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
Scanner reader = new Scanner(System.in);
どちらを選ぶべきですか?なぜ他の人ではなく、その人ですか?
数値を読み取る方法は非常に便利です。例外はチェックされていないため、定型的なtry/catchブロックを記述する必要はありません。
これらのほかに、datainputstreamなども使用できます。
現在、BufferedReaderは、文字入力ストリームからテキストを読み取り、文字、配列、および行の効率的な読み取りを提供するために文字をバッファリングします。バッファサイズを指定するか、デフォルトサイズを使用できます。デフォルトは、ほとんどの目的に十分な大きさです。
Scannerは、正規表現を使用してプリミティブ型と文字列を解析できる単純なテキストスキャナーです。 Scannerは、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。結果のトークンは、さまざまなnextメソッドを使用して異なるタイプの値に変換できます。スキャナーは、ストリームのコンテンツからトークンを解析するために使用されますが、BufferedReaderはストリームを読み取るだけで、特別な解析は行いません。
また、以下のリンクを確認してください。
コンソールクラスは、コンソール入力を処理するプラットフォームに依存しない方法を実装しようとします。すべてのOSには何らかの方法でコンソールがありますが、実装は静かです。そのため、コンソールクラスはJava platfrom独立したランタイムクラスを提供して、パスワード入力などにアクセスします。
スキャナーは、ストリームのコンテンツからトークンを解析するために使用されますが、BufferedReaderはストリームを読み取るだけで、特別な解析は行いません。