カテゴリ: Java 更新日: 2025/08/21

JavaのScannerクラスとnextIntメソッドの使い方を完全ガイド!初心者でもわかる数値入力の基本

ScannerのnextInt メソッド
ScannerのnextInt メソッド

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

生徒

「Javaでキーボードから数値を入力したいんですが、どうすればいいですか?」

先生

「JavaではScannerというクラスを使うことで、ユーザーからの入力を簡単に受け取ることができますよ。数値を入力するにはnextIntメソッドが便利です。」

生徒

Scannerクラスって、どんな特徴があるんですか?」

先生

「それでは、ScannerクラスとnextIntメソッドの基本から見ていきましょう!」

1. Scannerクラスとは何か?

1. Scannerクラスとは何か?
1. Scannerクラスとは何か?

JavaのScannerクラスは、java.utilパッケージに含まれており、キーボードやファイルなどからデータを読み込むためのクラスです。Javaプログラムでユーザーからの入力を扱うには、まずScannerクラスをインポートする必要があります。

Scannerクラスは、文字列、整数、小数、ブール値などさまざまなデータ型の入力に対応しています。これにより、Javaでの対話的な入力処理が非常に簡単になります。

次のサンプルコードは、コンソールからユーザー入力を受け取る基本的な例です。


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();
    }
}

2. nextIntメソッドの使い方

2. nextIntメソッドの使い方
2. nextIntメソッドの使い方

ScannerクラスのnextIntメソッドは、ユーザーが入力した整数を取得するためのメソッドです。System.in(標準入力)を通じて入力された文字列のうち、整数として解釈できる部分を読み取ってくれます。

このメソッドはint型の値を返すため、整数値を受け取りたい場合に非常に役立ちます。

以下は、年齢をキーボードから取得する例です。


import java.util.Scanner;

public class AgeInputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("あなたの年齢を入力してください: ");
        int age = scanner.nextInt();
        System.out.println("あなたは " + age + " 歳ですね。");
        scanner.close();
    }
}

あなたの年齢を入力してください: 25
あなたは 25 歳ですね。

3. 入力エラーを防ぐための注意点

3. 入力エラーを防ぐための注意点
3. 入力エラーを防ぐための注意点

nextIntメソッドは、ユーザーが正しい整数を入力したときにだけ正常に動作します。もしユーザーが文字や記号などの数値以外を入力した場合、InputMismatchExceptionというエラーが発生します。

このエラーを避けるには、hasNextIntメソッドを使って、次に入力される値が整数かどうかを事前に確認する方法が有効です。


import java.util.Scanner;

public class SafeIntInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("整数を入力してください: ");
        if (scanner.hasNextInt()) {
            int value = scanner.nextInt();
            System.out.println("入力された整数は: " + value);
        } else {
            System.out.println("エラー: 整数ではありません。");
        }
        scanner.close();
    }
}

整数を入力してください: abc
エラー: 整数ではありません。

4. nextIntとnextLineの併用時の注意点

4. nextIntとnextLineの併用時の注意点
4. nextIntとnextLineの併用時の注意点

nextIntを使った直後にnextLineを使うと、思ったように動作しないことがあります。これはnextIntが数字を読み取った後に、改行文字が入力バッファに残るためです。その改行がnextLineによって読まれてしまうのです。

この問題を回避するには、nextLineをもう一度呼び出して、残っている改行を読み飛ばす必要があります。


import java.util.Scanner;

public class InputProblemExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("年齢を入力してください: ");
        int age = scanner.nextInt();
        scanner.nextLine(); // 改行を読み飛ばす
        System.out.print("名前を入力してください: ");
        String name = scanner.nextLine();
        System.out.println("こんにちは " + name + " さん。あなたは " + age + " 歳ですね。");
        scanner.close();
    }
}

5. ScannerクラスとnextIntの活用例

5. ScannerクラスとnextIntの活用例
5. ScannerクラスとnextIntの活用例

実際の開発現場でも、ユーザーからの年齢や個数など、数値情報の入力はよく使われます。フォームのデータ取得、ゲームのスコア入力、商品の数量入力など、あらゆる場面で活躍します。

Javaで入力処理を扱う際は、まずScannerクラスとそのメソッドに慣れておくと、プログラム全体の流れがつかみやすくなります。

以下はnextIntnextLineを組み合わせた活用例です。


import java.util.Scanner;

public class ProductInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("商品名を入力してください: ");
        String product = scanner.nextLine();
        System.out.print("数量を入力してください: ");
        int quantity = scanner.nextInt();
        System.out.println("「" + product + "」を " + quantity + " 個、登録しました。");
        scanner.close();
    }
}

6.まとめ

6.まとめ
6.まとめ

Javaプログラミングにおける入力処理の基本として、ScannerクラスとそのnextIntメソッドは非常に重要な役割を果たします。特に初心者にとっては、コンソールからの数値入力を正確に処理する方法を知ることが、プログラム作成の大きな第一歩となります。

JavaのScannerクラスを使えば、文字列、整数、実数、ブール値など、さまざまなデータ型の入力が簡単に行えます。その中でもnextIntメソッドは、ユーザーから整数を受け取るのに最もよく使われるメソッドのひとつで、実際の開発現場でも頻繁に利用されています。

しかし、初心者がつまずきやすいポイントもあります。たとえば、数値以外の文字列を入力した場合に発生するInputMismatchExceptionや、nextIntの直後にnextLineを使うことで発生する改行文字の読み残しといったトラブルは、あらかじめ知っておくことで回避できます。

この記事で紹介したように、hasNextIntメソッドを併用して入力値を検証したり、nextLineを補助的に使って改行を消費するテクニックは、Java初心者がより堅牢なコードを書くための基本となります。

また、実際の入力シーンに応じてnextIntnextLineを適切に使い分けることが大切です。ユーザーから正確な情報を取得し、プログラムが期待通りに動作するように設計するには、入力処理の仕組みを深く理解する必要があります。

以下のサンプルは、入力の検証と複数のデータ取得を組み合わせた実践的な例です。


import java.util.Scanner;

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

        System.out.print("年齢を入力してください(整数): ");
        if (!scanner.hasNextInt()) {
            System.out.println("整数を入力してください。");
            scanner.close();
            return;
        }
        int age = scanner.nextInt();
        scanner.nextLine(); // 改行を読み飛ばす

        System.out.print("お名前を入力してください: ");
        String name = scanner.nextLine();

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

        scanner.close();
    }
}

Javaでの数値入力処理を理解することは、プログラムの安定性とユーザー体験の向上にもつながります。初心者のうちは少しややこしく感じるかもしれませんが、今回学んだScannerクラスとnextIntメソッドの基本的な使い方を何度も練習することで、自然とスムーズに入力処理ができるようになります。

入力処理の基礎をしっかり押さえることで、今後学ぶ条件分岐や繰り返し処理とも組み合わせた、より複雑なプログラムにも対応できるようになります。Javaの初心者にとって、Scannerクラスの理解はまさに必須知識といえるでしょう。

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

生徒

Scannerクラスって、文字列も数値も入力できるんですね!知らなかったです。」

先生

「そうですね。特にnextIntメソッドは、整数を扱うときにとても便利です。でもnextLineと組み合わせるときは注意が必要ですよ。」

生徒

「確かに、nextIntのあとにnextLineを使ったら変な動きをしました……。改行のことを忘れていました!」

先生

「そこに気づけたのは素晴らしいですね。scanner.nextLine()で改行を消費してから次の入力を受け取れば、問題なく動作しますよ。」

生徒

「これからはhasNextIntも使って、安全なコードを書くようにします!」

先生

「いいですね!入力の検証をきちんと行うのは、プロのプログラマーにとってとても大事な考え方ですよ。」

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

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

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

Javaで文字列を入力するにはどのクラスを使えばよいですか?

Javaでキーボードから文字列を入力するには、java.utilパッケージのScannerクラスを使います。Scannerは標準入力を簡単に扱える便利なクラスで、初心者に最適です。

ScannerクラスのnextLineメソッドはどんなときに使いますか?

nextLineメソッドは、ユーザーが入力した1行全体の文字列をそのまま取得したいときに使います。スペースを含む文章や日本語のメッセージを扱いたいときに最適です。

nextLineとnextの違いは何ですか?

nextメソッドは単語単位で文字列を取得し、スペースがあると途中で切れます。一方、nextLineは改行までのすべての文字列を取得できるため、文章全体を入力したい場合はnextLineを使います。

nextLineメソッドを使うときに注意することはありますか?

はい、nextIntやnextDoubleなど他の入力メソッドの後にnextLineを使うと、改行コードの影響で入力がスキップされることがあります。その場合はnextLineを余分に一度呼び出して改行を消す必要があります。

Scannerクラスのcloseメソッドはなぜ必要なのですか?

Scannerクラスで使用される入力リソース(System.in)を開放するためです。プログラムの最後でscanner.close()を呼び出すことで、不要なリソース使用やエラーを防ぐことができます。

Javaで複数の文字列を順番に入力するにはどうすればよいですか?

複数の文字列を入力したい場合は、ScannerクラスのnextLineメソッドを必要な回数分呼び出します。それぞれ別の変数に格納して、後でまとめて出力することもできます。

Java初心者がnextLineメソッドを覚えるメリットは何ですか?

nextLineメソッドは文章全体を簡単に扱えるため、入力処理の基礎として非常に重要です。フォーム入力やインタラクティブなアプリを作る際に必要になる基本スキルです。

nextIntのあとにnextLineを使うと入力できないのはなぜですか?

nextIntの後に残った改行文字がnextLineに読み込まれてしまうため、次の入力がスキップされたように見えるからです。この現象を防ぐには、nextLineを一度余分に呼び出しておくと解決できます。

JavaのScannerクラスを使うときにimportは必要ですか?

はい、Scannerクラスはjava.utilパッケージに属しているため、使用する前に「import java.util.Scanner;」をプログラムの先頭で書く必要があります。

nextLineで日本語やスペースを含む文字列も正しく入力できますか?

はい、nextLineメソッドは日本語やスペースを含んだ長文の入力にも対応しており、改行までのすべての文字列をそのまま読み込むことができます。

Javaの標準入力を使った簡単なアンケートを作るにはどうすればよいですか?

ScannerクラスとnextLineメソッドを使えば、名前や感想などの質問を順番に表示して、それぞれの回答を文字列として取得する簡単なアンケートプログラムを作成できます。

Scannerを自動でcloseするにはどう書けばよいですか?(try-with-resources)

Java 7以降はtry-with-resourcesが使えます。try (Scanner sc = new Scanner(System.in)) { ... }の形式にすると、ブロック終了時に自動でclose()され、リソースリークを防げます。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法