Javaでは、ユーザーからの入力を受け取るための方法としてScanner
クラスが広く使用されています。
参考 Javaのクラスとは?
このページでは、Scanner
クラスを使った標準入力の基本的な利用方法について解説。このテーマはJava初心者にとって非常に重要で、プログラムとユーザーの接点(=インタラクション)を理解するための基本となるため要チェックです。
関連 Javaの1stステップ:基本的な構文ルールを1分で復習!
Scannerクラスとは
Scanner
クラスは、java.util
パッケージに含まれているテキストを解析するためのクラスです。Scanner
を使用することで、キーボード入力、ファイル、文字列などからデータを簡単に読み取ることができるようになります。
参考 パッケージとは?
import java.util.Scanner; public class InputExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("あなたの名前を入力してください:"); String name = scanner.nextLine(); System.out.println("こんにちは、" + name + "さん!"); scanner.close(); } }
ポイント1 Scanner scanner = new Scanner(System.in)
→標準入力(キーボード)から入力を受け取るScanner
オブジェクトを作成。
ポイント2 scanner.nextLine()
→ユーザーが入力した一行の文字列を読み取る。
ポイント3 scanner.close()
→Scanner
オブジェクトをクローズしてリソースを解放。
上記のコードを読んでも「実際何を言っているの?」となる方向けに説明すると、Scanner
クラスはユーザーからの入力情報を受け取るための「箱」のような役割を果たします。もう少し詳しく言うと、Scanner
クラスはさまざまな入力ソース(キーボード、ファイル、文字列など)からデータを読み取りツールだと考えればOK。
import java.util.Scanner; public class InputExample { public static void main(String[] args) { // Scannerオブジェクトの作成 // ここでは、System.inを使用して標準入力からデータを読み取るScannerオブジェクトを作成。 // →キーボードからの入力を受け取る「箱」の役割を果たします。 Scanner scanner = new Scanner(System.in); // ユーザーに入力を促すメッセージを表示 System.out.println("あなたの名前を入力してください:"); // ユーザーの入力を読み取る // nextLine()メソッドを使用して、ユーザーが入力した一行の文字列を読み取る。 // Scannerオブジェクトがこのデータを保持し、プログラムが利用できるようにします。 String name = scanner.nextLine(); // 入力された名前を表示 System.out.println("こんにちは、" + name + "さん!"); // Scannerオブジェクトをクローズ scanner.close(); } }
Scannerクラスのメソッド(これだけ覚えればOK)
メソッド | 説明 |
---|---|
nextLine() | 次の一行を読み取る。 |
nextInt() | 次の整数を読み取る。 |
nextDouble() | 次の浮動小数点数を読み取る。 |
nextBoolean() | 次のブール値を読み取る。 |
next() | 次の単語を読み取る。 |
import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { // Scannerオブジェクトの作成 Scanner scanner = new Scanner(System.in); // nextLine()の例 - 一行の文字列を読み取る System.out.println("あなたの名前を入力してください:"); String name = scanner.nextLine(); System.out.println("こんにちは、" + name + "さん!"); // next()の例 - 次の単語を読み取る System.out.println("好きな色を一単語で入力してください:"); String color = scanner.next(); System.out.println("あなたの好きな色は " + color + " ですね!"); // nextInt()の例 - 整数を読み取る System.out.println("あなたの年齢を入力してください:"); int age = scanner.nextInt(); System.out.println("あなたは " + age + " 歳ですね!"); // nextDouble()の例 - 浮動小数点数を読み取る System.out.println("身長をメートル単位で入力してください (例: 1.75):"); double height = scanner.nextDouble(); System.out.println("あなたの身長は " + height + " メートルですね!"); // nextBoolean()の例 - 真偽値を読み取る System.out.println("Javaが好きですか? (true/false):"); boolean likesJava = scanner.nextBoolean(); if (likesJava) { System.out.println("素晴らしい!Javaが好きなのですね。"); } else { System.out.println("残念!でも他にも面白い言語はたくさんありますよ。"); } // Scannerオブジェクトをクローズ scanner.close(); } }
nextLine():
一行の文字列を読み取ります。ユーザーがEnterキーを押すまでの全ての文字を取得します。
System.out.println("あなたの名前を入力してください:"); String name = scanner.nextLine(); System.out.println("こんにちは、" + name + "さん!");
next():
スペースや改行で区切られた単語を取得します。
System.out.println("好きな色を一単語で入力してください:"); String color = scanner.next(); System.out.println("あなたの好きな色は " + color + " ですね!");
nextInt():
次の整数を読み取ります。ユーザーが入力した整数値を取得。
System.out.println("あなたの年齢を入力してください:"); int age = scanner.nextInt(); System.out.println("あなたは " + age + " 歳ですね!");
nextInt()
は整数入力を期待します。ユーザーが整数以外の値を入力するとInputMismatchException
が発生します。そのため、入力の形式をチェックする例外処理を追加することが推奨されます。
import java.util.InputMismatchException; import java.util.Scanner; public class NextIntExampleWithExceptionHandling { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("あなたの年齢を入力してください:"); try { int age = scanner.nextInt(); System.out.println("あなたは " + age + " 歳ですね!"); } catch (InputMismatchException e) { System.out.println("無効な入力です。整数を入力してください。"); } scanner.close(); } }
nextDouble():
次の浮動小数点数を読み取ります。ユーザーが入力した小数値を取得します。
System.out.println("身長をメートル単位で入力してください (例: 1.75):"); double height = scanner.nextDouble(); System.out.println("あなたの身長は " + height + " メートルですね!");
こちらも浮動小数点を期待するため、同様に例外処理を実装することが求められます。
nextBoolean():
次のブール値(true
または false
)を読み取ります。ユーザーが入力した真偽値を取得します。
System.out.println("Javaが好きですか? (true/false):"); boolean likesJava = scanner.nextBoolean(); if (likesJava) { System.out.println("素晴らしい!Javaが好きなのですね。"); } else { System.out.println("残念!でも他にも面白い言語はたくさんありますよ。"); }
まとめ Scanner
クラスの利用方法
メソッド | 説明 | 使用例 |
---|---|---|
nextLine() | 一行全体を読み取ります。改行までの全ての文字を含みます。 | String input = scanner.nextLine(); |
next() | 次の単語を読み取ります。スペースや改行で区切られた単語。 | String word = scanner.next(); |
nextInt() | 次の整数を読み取ります。 | int number = scanner.nextInt(); |
nextDouble() | 次の浮動小数点数を読み取ります。 | double value = scanner.nextDouble(); |
nextBoolean() | 次の真偽値を読み取ります。 | boolean flag = scanner.nextBoolean(); |