はじめに
Javaでプログラムにユーザー入力を取り込む際には、Scannerクラスがよく使用されます。
この記事では、Scannerクラスの基本的な使い方から応用技術まで、幅広く解説していきます。
初心者から上級者まで役立つ内容を心掛けていますので、ぜひ最後までご覧ください。
Scannerクラスの基本
JavaでのScannerクラスの使い方を基本から見ていきましょう。
まずは、Scannerクラスを使ってコンソールから文字列を入力し、それを表示する一番シンプルな例から始めます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("あなたの名前は?"); String name = scanner.nextLine(); System.out.println("こんにちは、" + name + "さん!"); } } |
出力結果
あなたの名前は?
(ユーザー入力: 山田太郎)
こんにちは、山田太郎さん!
数値の入力を受け取る
次に、Scannerクラスを使用して数値を入力し、その数値を使った簡単な計算をする例を見てみましょう。
ユーザーが入力した数値に10を足した結果を表示します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 |
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("数値を入力してください:"); int number = scanner.nextInt(); System.out.println("入力された数値に10を足すと:" + (number + 10)); } } |
出力結果
数値を入力してください:
(ユーザー入力: 20)
入力された数値に10を足すと:30
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
複数のデータ型を混在させて読み込む
Scannerクラスでは、文字列だけでなく、整数や浮動小数点数など、様々なデータ型の入力を扱うことができます。
ここでは、名前(文字列)と年齢(整数)、体重(浮動小数点数)を入力してもらい、入力された情報を表示する例を紹介します。
[st-midasibox title="ソースコード例" webicon="st-svg-check-circle faa-ring animated" bordercolor="#FFC107" color="" bgcolor="#FFFDE7" borderwidth="" borderradius="5" titleweight="bold" myclass=""]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("名前を入力してください:"); String name = scanner.nextLine(); System.out.println("年齢を入力してください:"); int age = scanner.nextInt(); System.out.println("体重を入力してください(kg):"); double weight = scanner.nextDouble(); System.out.println("名前:" + name + "、年齢:" + age + "歳、体重:" + weight + "kg"); } } |
[/st-midasibox]
[st-pre myclass="st-terminal" text="出力結果" webicon="st-svg-terminal"]
名前を入力してください:
(ユーザー入力: 鈴木一郎)
年齢を入力してください:
(ユーザー入力: 28)
体重を入力してください(kg):
(ユーザー入力: 70.5)
名前:鈴木一郎、年齢:28歳、体重:70.5kg
[/st-pre]
[st-kaiwa3]いろんなタイプの入力を一度に扱えるって、めちゃ便利だね![/st-kaiwa3]
この記事では、JavaのScannerクラスを使った基本的な入力の受け取り方から、複数のデータ型を扱う方法までを解説しました。しかし、Scannerクラスの使い方はこれだけではありません。例えば、ループを使って複数の入力を処理したり、区切り文字をカスタマイズして特定の形式の入力を解析する方法など、さらに高度なテクニックが存在します。
ループを使用して複数の入力を処理する
ユーザーから複数の入力を受け取りたい場合、ループを使用すると効率的に処理できます。
次の例では、ユーザーが"end"と入力するまで名前を入力し続けることができるプログラムを紹介します。
[st-midasibox title="ソースコード例" webicon="st-svg-check-circle faa-ring animated" bordercolor="#FFC107" color="" bgcolor="#FFFDE7" borderwidth="" borderradius="5" titleweight="bold" myclass=""]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("名前を入力してください(終了するには'end'と入力):"); String name = scanner.nextLine(); if ("end".equals(name)) { break; } System.out.println("こんにちは、" + name + "さん!"); } } } |
[/st-midasibox]
[st-pre myclass="st-terminal" text="出力結果" webicon="st-svg-terminal"]
名前を入力してください(終了するには'end'と入力):
(ユーザー入力: 山田太郎)
こんにちは、山田太郎さん!
名前を入力してください(終了するには'end'と入力):
(ユーザー入力: end)
[/st-pre]
[st-kaiwa2]「end」って入力するまでずっと聞いてくれるんだ。便利だね!
区切り文字をカスタマイズして入力を解析する
Scannerクラスでは、デフォルトで空白(スペース、タブ、改行など)を区切り文字として使用しますが、これをカスタマイズすることも可能です。
次の例では、カンマ(,)を区切り文字として設定し、カンマ区切りの値を個別に読み込む方法を示します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); scanner.useDelimiter(","); System.out.println("カンマ区切りで数値を入力してください(例:1,2,3):"); while (scanner.hasNextInt()) { int number = scanner.nextInt(); System.out.println("入力された数値:" + number); } } } |
出力結果
カンマ区切りで数値を入力してください(例:1,2,3):
(ユーザー入力: 1,2,3)
入力された数値:1
入力された数値:2
入力された数値:3
例外処理を使用して入力エラーを処理する
ユーザーからの入力を受け取る際、想定外の型のデータが入力されることがあります。
このような場合、例外処理を使用してエラーを適切に処理することが重要です。
以下の例では、整数の入力を期待している場所で、非整数が入力された場合に例外をキャッチし、エラーメッセージを表示します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.InputMismatchException; import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); try { System.out.println("整数を入力してください:"); int number = scanner.nextInt(); System.out.println("入力された数値:" + number); } catch (InputMismatchException e) { System.out.println("エラー:整数を入力してください!"); } } } |
出力結果
整数を入力してください:
(ユーザー入力: 文字列)
エラー:整数を入力してください!
まとめ
この記事では、JavaのScannerクラスの使い方を、基本的な入力の受け取り方から、ループを使った複数の入力の処理、区切り文字のカスタマイズ、例外処理によるエラーハンドリングまで幅広く解説しました。
これらの知識を活用することで、Javaにおける様々なユーザー入力のシナリオを柔軟に扱うことができるようになります。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!