Codegym University コースの一部としてのメンターによる講義の抜粋。フルコースにお申し込みください。


「アミーゴ、お時間です。これからキーボード入力について説明します。」

「画面にデータを表示するためにSystem.out を使用しました。入力を受け取るにはSystem.inを使用します。」

「簡単そうですね。」

「しかし、System.in には 1 つの欠点があります。キーボードから文字コードしか読み取れないということです。この問題を回避して、大量のデータを一度に読み取るには、より複雑な構造を使用します。」

例1
キーボードから文字列と数字を入力する
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String name = bufferedReader.readLine(); //Read a string from the keyboard
String sAge = bufferedReader.readLine(); //Read a string from the keyboard
int nAge = Integer.parseInt(sAge); //Convert the string to a number.
例 2
前の例のよりコンパクトなバージョン:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String name = reader.readLine();
String sAge = reader.readLine();
int nAge = Integer.parseInt(sAge);
例3
さらにコンパクトに
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();

"質問は?"

「うーん…何も分かりませんでした。」

「キーボードから文字列を読み取るには、 BufferedReader オブジェクトを使用するのが最も便利です。ただし、そのためには、データを読み取るオブジェクトを渡す必要があります。この場合は、System.inです。」

「しかし、System.inBufferedReader には互換性がないので、別のアダプター、つまり別のInputStreamReaderオブジェクトを使用します。」

「もう分かった気がします。このScanner クラスは何ですか?」

「スキャナーは便利かもしれませんが、あまり便利ではありません。問題は、(勉強と仕事の両方で) 進めていくと、BufferedReader と InputStreamReader を頻繁に使用することになりますが、スキャナーはほとんど使用しないということです。この例では便利ですが、将来的にはあまり役に立たなくなるので、あまり使用しません。」

「それは明らかなようですが、すべてを理解したかどうかはわかりません。」