こんにちは!フリーランスの長野です。Javaで標準入力って使っていますか?
標準入力とはキーボードで文字列などを入力することです。この記事では、標準入力について
- 標準入力、標準出力とは?
- Scannerの使い方
- InputStreamReaderの使い方
といったように、基本的な内容から応用的な内容についても解説していきます。今回は標準入力について、わかりやすく解説します。
なお、Javaの記事については、こちらにまとめています。
標準入力、標準出力とは?
標準入力とは、わかりやすく言うと「キーボードからの入力」を指します。主にコンソールアプリケーションでキーボードから入力した内容を、プログラムがデータとして受け取って処理を実行します。
これに対して標準出力とは、プログラムからデータを表示するための装置のことで一般にディスプレイに表示することを言います。Javaでは入出力関連のクラスは、java.ioパッケージにまとめられています。
標準入力
JavaではSystemクラスのinフィールドで標準入力を取得します。System.inの型はInputStream型です。
これはバイトストリームでの読み込みを行うメソッドしか持たないので、ScannerクラスやInputStreamReaderクラスのオブジェクトに変換して文字列で取得できるようにします。この記事ではScannerクラスやInputStreamReaderクラスについて解説します!
標準出力
一方、標準出力ではSystemクラスのoutフィールドを使います。System.outの型はPrintStream型です。
PrintStreamクラスにはprintlnメソッドやprintメソッド、printfメソッドなどが用意されています。おなじみのprintlnメソッドは出力後に改行します。printメソッドは出力後に改行しません。printfメソッドはC言語のようにフォーマットを指定して出力します。
Scannerの使い方
java.util.Scannerクラスには、一行分の入力を取得するnextLineメソッドや空白文字までの入力を取得するnextメソッド、数値の入力を取得するnextIntメソッドなどが用意されています。それぞれの使い方について確認していきましょう。
nextLineで行入力を取得
nextLineメソッドを使うと、改行までの一行分の入力を取得することができます。
import java.util.Scanner; public class InputSample { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str = scan.nextLine(); System.out.println(str); scan.close(); } }
実行結果:
Hello Java!
「Hello Java!」と入力した結果が表示されています。
nextで空白文字までを取得
nextメソッドを使うと空白文字までの入力を取得することができます。
import java.util.Scanner; public class InputSample { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str1 = scan.next(); String str2 = scan.next(); System.out.println(str1); System.out.println(str2); scan.close(); } }
実行結果:
samurai engineer
「samurai engineer」と入力した結果が表示されています。
nextIntで数値を取得
nextIntメソッドを使うとint型の数値を取得することができます。浮動小数点数型の数値を取得するnextDoubleメソッドやnextFloatメソッドなどもあります。
import java.util.Scanner; public class InputSample { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num1 = scan.nextInt(); int num2 = scan.nextInt(); int sum = num1 + num2; System.out.println(num1 + " + " + num2 + " = " + sum); scan.close(); } }
実行結果:
2 + 3 = 5
「2 3」と入力した結果が表示されています。
InputStreamReaderの使い方
InputStreamReaderクラスを使っても入力文字列を取得することができます。ただ、InputStreamReaderクラスには一文字ごとに読み込むreadメソッドしか用意されていません。
一文字ごとに読み込むのは効率が悪いので、BufferedReaderクラスのオブジェクトに変換して一行まとめて読み込む方法が一般的です。BufferedReaderクラスのreadLineメソッドを使って一行ごとに読み込みます。
サンプルコードで確認しましょう。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class InputSample { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String str = reader.readLine(); System.out.println(str); reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
実行結果:
Hello Java!
まとめ
ここでは標準入力について説明しました。JavaではScannerクラスやInputStreamReaderクラスを使って文字列に変換してから入力を取得する必要があります。
使いこなすことができるように、この記事を何度も参考にして下さいね!