JavaのScannerとは?入力の受け取り方・使い方・注意点を初心者向けにやさしく解説!

Java

はじめに

Javaの学習を進めていると、プログラムに**「入力」を受け取る方法**に悩むことがありますよね。そんなときに登場するのが Scanner(スキャナー)クラス です。

Scannerを使えば、キーボードからの入力やファイルの読み込みがとても簡単になります。

この記事では、Java初心者の方に向けて、Scannerクラスの基本から応用までやさしく解説します。


1. Scannerとは?

Javaでの「入力」を楽にするツール

Javaには、Scannerという便利なクラスが用意されています。これは、ユーザーのキーボードからの入力やファイルの中身を簡単に読み取るためのツールです。

Scannerは、java.utilパッケージに含まれているので、使うときには最初に以下のように書きます:

import java.util.Scanner;

2. キーボード入力の基本ステップ

まずは、ユーザーからキーボードで入力を受け取る方法から学びましょう。

例:名前を入力して表示するプログラム

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // スキャナを作成

System.out.print("あなたの名前を入力してください:");
String name = scanner.nextLine(); // 一行読み取り

System.out.println("こんにちは、" + name + "さん!");

scanner.close(); // 最後は忘れずに閉じよう
}
}

3. データ型ごとの読み取りメソッド

Scannerでは、読み取るデータの種類に応じて、いろいろなメソッドが用意されています。

メソッド意味使用例
next()単語を読み取る(空白まで)名前など
nextLine()一行まるごとコメント入力など
nextInt()整数年齢など
nextDouble()小数価格など
nextBoolean()true/false確認など

使用例

System.out.print("年齢を入力してください:");
int age = scanner.nextInt();

System.out.println("あなたは " + age + " 歳です。");

4. 入力エラー(例外)への対処

Scannerで数字を入力するつもりが文字を入れてしまうと、**InputMismatchException**というエラーになります。

例外処理の例

try {
System.out.print("年齢を入力してください:");
int age = scanner.nextInt();
System.out.println("あなたは " + age + " 歳です。");
} catch (Exception e) {
System.out.println("整数を入力してください!");
}

5. ファイル読み込みにも使える!

Scannerは、ファイルの中身を読み込むこともできます。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FileReaderExample {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("sample.txt");
Scanner scanner = new Scanner(file);

while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}

scanner.close();
}
}

6. Scannerのクローズとリソース管理

Scannerを使い終えたら、close()で閉じるのが基本ルールです。忘れると、メモリリークの原因になることも。

安全な書き方:try-with-resources

try (Scanner scanner = new Scanner(System.in)) {
// ここで使用する
}

try(...)の中で作成したオブジェクトは、自動的にcloseされるので安心です。


7. 注意点・よくあるミス

nextInt() の後の nextLine() がうまく動かない!

System.out.print("年齢を入力:");
int age = scanner.nextInt(); // ここで数値だけ読む

System.out.print("コメントを入力:");
String comment = scanner.nextLine(); // ←実行されない!

これは、nextInt()が読み込んだあとの「Enterキー」の改行がそのまま残ってしまうからです。

解決法

scanner.nextLine(); // 改行だけ捨てる
String comment = scanner.nextLine(); // 本来の入力

8. 実践コード例集

① 名前と年齢を聞くプログラム

Scanner scanner = new Scanner(System.in);

System.out.print("名前を入力:");
String name = scanner.nextLine();

System.out.print("年齢を入力:");
int age = scanner.nextInt();

System.out.println(name + "さんは " + age + " 歳ですね。");

scanner.close();

② ファイルからCSV読み込み(1行ずつ)

Scanner scanner = new Scanner(new File("data.csv"));

while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] values = line.split(",");
System.out.println("名前:" + values[0] + " 年齢:" + values[1]);
}

scanner.close();

9. 学習の進め方と次のステップ

Scannerを使えるようになると、Javaでの対話的なプログラムが書けるようになります。

  • 入力を受けて処理する
  • ファイルからデータを読む

この2つができれば、実用的なアプリ開発の第一歩です!

まずは「絶対にJavaプログラマーになりたい人へ。」を読んでScannerの基本を身につけましょう。

もっと学びたい方、コードレビューや転職サポートを受けたい方は「サイゼントアカデミー」をぜひ活用してください!


まとめ

  • Scannerはキーボードやファイルからの入力に使う
  • nextInt()nextLine() の違いに注意
  • 使い終わったら close() するのを忘れずに
  • 例外処理やエラー対応も習慣化しよう!

コメント

タイトルとURLをコピーしました