はじめに
Javaの学習を進めていると、プログラムに**「入力」を受け取る方法**に悩むことがありますよね。そんなときに登場するのが Scanner
(スキャナー)クラス です。
Scannerを使えば、キーボードからの入力やファイルの読み込みがとても簡単になります。
この記事では、Java初心者の方に向けて、Scannerクラスの基本から応用までやさしく解説します。
1. Scannerとは?
Javaでの「入力」を楽にするツール
Javaには、Scanner
という便利なクラスが用意されています。これは、ユーザーのキーボードからの入力やファイルの中身を簡単に読み取るためのツールです。
Scannerは、java.util
パッケージに含まれているので、使うときには最初に以下のように書きます:
1 |
import java.util.Scanner;<br> |
2. キーボード入力の基本ステップ
まずは、ユーザーからキーボードで入力を受け取る方法から学びましょう。
例:名前を入力して表示するプログラム
1 |
import java.util.Scanner;<br><br>public class Main {<br> public static void main(String[] args) {<br> Scanner scanner = new Scanner(System.in); // スキャナを作成<br><br> System.out.print("あなたの名前を入力してください:");<br> String name = scanner.nextLine(); // 一行読み取り<br><br> System.out.println("こんにちは、" + name + "さん!");<br><br> scanner.close(); // 最後は忘れずに閉じよう<br> }<br>}<br> |
3. データ型ごとの読み取りメソッド
Scannerでは、読み取るデータの種類に応じて、いろいろなメソッドが用意されています。
メソッド | 意味 | 使用例 |
---|---|---|
next() | 単語を読み取る(空白まで) | 名前など |
nextLine() | 一行まるごと | コメント入力など |
nextInt() | 整数 | 年齢など |
nextDouble() | 小数 | 価格など |
nextBoolean() | true/false | 確認など |
使用例
1 |
System.out.print("年齢を入力してください:");<br>int age = scanner.nextInt();<br><br>System.out.println("あなたは " + age + " 歳です。");<br> |
4. 入力エラー(例外)への対処
Scannerで数字を入力するつもりが文字を入れてしまうと、**InputMismatchException
**というエラーになります。
例外処理の例
1 |
try {<br> System.out.print("年齢を入力してください:");<br> int age = scanner.nextInt();<br> System.out.println("あなたは " + age + " 歳です。");<br>} catch (Exception e) {<br> System.out.println("整数を入力してください!");<br>}<br> |
5. ファイル読み込みにも使える!
Scannerは、ファイルの中身を読み込むこともできます。
1 |
import java.io.File;<br>import java.io.FileNotFoundException;<br>import java.util.Scanner;<br><br>public class FileReaderExample {<br> public static void main(String[] args) throws FileNotFoundException {<br> File file = new File("sample.txt");<br> Scanner scanner = new Scanner(file);<br><br> while (scanner.hasNextLine()) {<br> String line = scanner.nextLine();<br> System.out.println(line);<br> }<br><br> scanner.close();<br> }<br>}<br> |
6. Scannerのクローズとリソース管理
Scannerを使い終えたら、close()
で閉じるのが基本ルールです。忘れると、メモリリークの原因になることも。
安全な書き方:try-with-resources
1 |
try (Scanner scanner = new Scanner(System.in)) {<br> // ここで使用する<br>}<br> |
try(...)
の中で作成したオブジェクトは、自動的にcloseされるので安心です。
7. 注意点・よくあるミス
nextInt() の後の nextLine() がうまく動かない!
1 |
System.out.print("年齢を入力:");<br>int age = scanner.nextInt(); // ここで数値だけ読む<br><br>System.out.print("コメントを入力:");<br>String comment = scanner.nextLine(); // ←実行されない!<br> |
これは、nextInt()
が読み込んだあとの「Enterキー」の改行がそのまま残ってしまうからです。
解決法
1 |
scanner.nextLine(); // 改行だけ捨てる<br>String comment = scanner.nextLine(); // 本来の入力<br> |
8. 実践コード例集
① 名前と年齢を聞くプログラム
1 |
Scanner scanner = new Scanner(System.in);<br><br>System.out.print("名前を入力:");<br>String name = scanner.nextLine();<br><br>System.out.print("年齢を入力:");<br>int age = scanner.nextInt();<br><br>System.out.println(name + "さんは " + age + " 歳ですね。");<br><br>scanner.close();<br> |
② ファイルからCSV読み込み(1行ずつ)
1 |
Scanner scanner = new Scanner(new File("data.csv"));<br><br>while (scanner.hasNextLine()) {<br> String line = scanner.nextLine();<br> String[] values = line.split(",");<br> System.out.println("名前:" + values[0] + " 年齢:" + values[1]);<br>}<br><br>scanner.close();<br> |
9. 学習の進め方と次のステップ
Scannerを使えるようになると、Javaでの対話的なプログラムが書けるようになります。
- 入力を受けて処理する
- ファイルからデータを読む
この2つができれば、実用的なアプリ開発の第一歩です!
まずは「絶対にJavaプログラマーになりたい人へ。」を読んでScannerの基本を身につけましょう。
もっと学びたい方、コードレビューや転職サポートを受けたい方は「サイゼントアカデミー」をぜひ活用してください!
まとめ
- Scannerはキーボードやファイルからの入力に使う
nextInt()
やnextLine()
の違いに注意- 使い終わったら
close()
するのを忘れずに - 例外処理やエラー対応も習慣化しよう!
コメント