カテゴリ: Java 更新日: 2026/04/12

JavaのScannerクラスとnextメソッドの使い方を徹底解説!初心者でもわかる入力処理

Scannerのnextメソッド
Scannerのnextメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaでユーザーからの入力を受け取る方法を知りたいです。」

先生

「JavaではScannerクラスを使えば、キーボードからの入力を簡単に処理できますよ。」

生徒

「それってどのように使うんですか?具体例が見たいです。」

先生

「では、基本的なScannerクラスの使い方とnextメソッドについて説明しましょう。」

1. Scannerクラスとは?【基本概念と仕組み】

「1. Scannerクラスとは?【基本概念と仕組み】」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. Scannerクラスとは?【基本概念と仕組み】
1. Scannerクラスとは?【基本概念と仕組み】

JavaのScanner(スキャナ)クラスは、キーボードから入力した文字や数値、またはファイル内のデータを読み取るために用意された便利なツールです。Javaでプログラムと対話する(ユーザーが値を入力して結果を変える)ための最も標準的な方法として、初心者の方にまず覚えてほしい機能です。java.utilパッケージに含まれているため、使用する際はプログラムの冒頭でインポートする必要があります。

プログラミング未経験の方へ: 「スキャナ」という名前の通り、入力された情報を「読み取って分析する装置」だとイメージすると分かりやすいですよ。

Scannerクラスでできること

このクラスを使うと、以下のような処理が驚くほど簡単に実装できます:

  • 多様なデータ型の読み取り: 文字列だけでなく、整数(int)や小数(double)など、入力内容を自動で判別して取得できます。
  • データの自動分割: スペース(空白)や改行を区切り文字として認識し、長い文章から特定の単語だけを抜き出すことが可能です。
  • 直感的なコード記述: 複雑なストリーム処理を意識せず、シンプルな命令だけでユーザーとのやり取りを構築できます。

最もシンプルなScannerの基本構造

まずは、「キーボードから文字を受け取る準備」をするための最小限のコードを見てみましょう。


import java.util.Scanner; // 1. Scannerを使うための準備

public class ScannerBasicExample {
    public static void main(String[] args) {
        // 2. Scannerのインスタンス(実体)を作成
        // System.in は「キーボードからの入力」を意味します
        Scanner scanner = new Scanner(System.in);

        System.out.println("Scannerの準備が完了しました。");
        
        // 使い終わったら閉じるのがJavaのルールです
        scanner.close();
    }
}

このコード自体は何も表示されませんが、new Scanner(System.in)という記述が「ユーザーの入力を待ち受ける魔法の杖」を作成していると考えてください。この杖(インスタンス)を使って、次の章から解説するnextメソッドなどを呼び出し、実際のデータを取り出していきます。

2. nextメソッドの基本的な使い方:単語単位での入力取得

2. nextメソッドの基本的な使い方:単語単位での入力取得
2. nextメソッドの基本的な使い方:単語単位での入力取得

Javaでユーザーがキーボードから入力した文字を受け取る際、最もシンプルで頻繁に使われるのがnextメソッドです。このメソッドの最大の特徴は、「スペース(空白)や改行までを一つの区切り」として読み取ることです。

例えば、「プログラミング 学習」と入力した場合、最初の「プログラミング」という単語だけをスマートに取り出すことができます。プログラミング未経験の方でも直感的に使いやすい、基本的な記述方法を見てみましょう。

サンプルプログラム:入力された最初の単語を表示する


import java.util.Scanner;

public class ScannerNextExample {
    public static void main(String[] args) {
        // キーボード入力を受け取る準備
        Scanner scanner = new Scanner(System.in);

        System.out.print("お名前(名字と名前の間にスペースを入れて)を入力してください: ");

        // next()メソッドで最初の「名字」だけを取得
        String firstName = scanner.next();

        System.out.println("こんにちは、" + firstName + "さん!");
        System.out.println("※nextメソッドはスペースの後の文字は読み飛ばします。");

        // 使った後は忘れずに閉じる
        scanner.close();
    }
}

ここがポイント!

  • トークン(単語)の取得: next()は、入力された文字列を「トークン」と呼ばれる単位で分割して処理します。デフォルトでは、空白やタブ、改行がその区切りになります。
  • 待機状態: プログラムがscanner.next()の行に到達すると、ユーザーが何かを入力してEnterキーを押すまで一時停止(待機)します。
  • 初心者へのアドバイス: 「文章全体」ではなく「名前だけ」「性別だけ」といった、短いキーワードを一つずつ取得したい場合に非常に便利なメソッドです。

3. nextメソッドとnextLineメソッドの違い:どっちを使うべき?

3. nextメソッドとnextLineメソッドの違い:どっちを使うべき?
3. nextメソッドとnextLineメソッドの違い:どっちを使うべき?

Javaで入力を受け取る際、初心者が最もつまずきやすいのが next()nextLine() の使い分けです。これらは「どこまでを一度に読み込むか」という範囲が異なります。まずは以下の比較表で、その特徴を整理しましょう。

メソッド名 読み取りの範囲 区切り文字の扱い 主な利用シーン
next() 次の「単語」まで スペースや改行で止まる 名前や年齢など、1つのデータ入力
nextLine() 次の「行」まで エンターキー(改行)で止まる 住所や文章など、スペースを含む入力

実践サンプル:入力結果の違いを見てみよう

例えば、コンソールに「Hello Java World」と入力した場合、プログラムがどのようにデータを受け取るかを比較してみましょう。プログラミング未経験の方でも、このコードを実行すると違いが一目でわかります。


import java.util.Scanner;

public class ScannerComparison {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("「Hello Java World」と入力してエンターを押してください:");

        // next()の場合:最初のスペースで止まるため「Hello」だけを取得
        // nextLine()の場合:行末まで全て読み込むため「Hello Java World」を取得
        String result = scanner.next(); 
        
        System.out.println("取得した結果: " + result);
        System.out.println("※next()を使うと、最初の単語しか取得されません。");
        
        scanner.close();
    }
}

【重要】初心者が注意すべきポイント

next() を使った後に nextLine() を連続で使用すると、入力したはずの文字が読み飛ばされる現象が発生することがあります。これは、next() が残した「改行(エンターの跡)」を nextLine() が拾ってしまうためです。確実に一行丸ごと取得したい場合は、最初から nextLine() を使うのがスムーズな開発のコツです。

4. Scannerクラスの便利な使い方

「4. Scannerクラスの便利な使い方」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. Scannerクラスの便利な使い方
4. Scannerクラスの便利な使い方

Scannerクラスはnextメソッド以外にも便利な機能を持っています。例えば、数値を取得する場合、nextIntnextDoubleメソッドを使用します。

以下は、数値入力の例です:


import java.util.Scanner;

public class ScannerNumericExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("整数を入力してください: ");
        int number = scanner.nextInt(); // 整数を取得
        System.out.println("入力された数値: " + number);
        scanner.close();
    }
}

このプログラムでは、ユーザーが入力した整数を取得し、それを出力します。

5. Scannerクラス使用時の注意点

5. Scannerクラス使用時の注意点
5. Scannerクラス使用時の注意点

最後に、Scannerクラスを使用する際の注意点をいくつか挙げます:

  • リソースの解放: scanner.close()を呼び出してリソースを適切に解放する。
  • 入力形式の注意: データ型に合わない入力をするとInputMismatchExceptionが発生する。
  • 改行の扱い: nextIntなどの後にnextLineを使用する場合、改行が残ることに注意する。

6. まとめ

6. まとめ
6. まとめ

今回の記事では、JavaのScannerクラスとその基本的なメソッドであるnextメソッドについて詳しく学びました。Scannerクラスはユーザーからの入力を処理するための便利なツールであり、基本的な使い方を理解すれば、さまざまなプログラムに応用できます。また、nextメソッドを活用して単語単位で入力を取得したり、nextLineメソッドを用いて行全体の入力を取得する方法についても学びました。

さらに、入力処理でよく使われるnextIntnextDoubleなどのメソッドの使い方や、それらを使用する際の注意点についても触れました。特に、scanner.close()によるリソースの解放や、例外処理に備えることが重要であることが分かりました。

以下に、今回の学びを活用した簡単なプログラム例を示します。これを試してみて、Scannerクラスの便利さを実感してください。


import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        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();
    }
}

このプログラムでは、名前と年齢の両方を入力する例を示しています。このように、複数の入力を組み合わせて扱うことで、より実用的なプログラムを作ることができます。

先生と生徒の振り返り会話

生徒

「今回のScannerクラスについて、基本から応用までしっかり学べました!特にnextメソッドとnextLineメソッドの違いが分かりやすかったです。」

先生

「良かったです。ScannerクラスはJavaプログラミングでとても役立つので、これを機にしっかりと使いこなせるようにしましょう。」

生徒

「今度はエラー処理についても学びたいです。例えば、入力ミスがあった場合の対応など。」

先生

「それは素晴らしい考えですね。次回は例外処理やtry-catch構文について学び、より堅牢なプログラムを作る方法を見ていきましょう。」

この記事を読んだ人からの質問

「この記事を読んだ人からの質問」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのScannerクラスとは一体どのような機能を持つクラスなのでしょうか?初心者にもわかりやすく教えてください。

JavaのScannerクラスは、プログラムを実行している最中に、ユーザーがキーボードから入力した文字や数値、あるいはファイルの中に保存されているデータなどを読み取るために用意された非常に便利なクラスです。Java標準ライブラリのjava.utilというパッケージに含まれており、プログラミング初心者がJavaの学習を始める際に、最初に行う「ユーザーとの対話型プログラム」の作成には欠かせない存在です。このクラスを使うことで、標準入力であるSystem.inからデータを受け取り、それを文字列や整数といったJavaのデータ型として簡単に扱うことができるようになります。
カテゴリの一覧へ
新着記事
New1
Spring
Springの@annotationアノテーションの使い方を完全ガイド!初心者でもわかるAOPの活用法
更新記事
New2
Spring
Javaの@withinアノテーションを初心者向けに解説!Spring AOPでの使い方を完全ガイド
更新記事
New3
Spring
Springの@AfterThrowingアノテーションの使い方を完全ガイド!初心者でもわかる例外処理
更新記事
New4
Spring
Javaの@AfterReturningアノテーションの使い方を完全ガイド!初心者でもわかるAOP入門
更新記事
人気記事
No.1
Java&Spring記事人気No1
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.2
Java&Spring記事人気No2
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう
No.3
Java&Spring記事人気No3
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.5
Java&Spring記事人気No5
JSP
JSPでフォームを表示して入力を受け取る基本手順をやさしく解説!初心者向けフォーム処理の入門ガイド
No.6
Java&Spring記事人気No6
Java
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得
No.7
Java&Spring記事人気No7
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.8
Java&Spring記事人気No8
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ