Java入門 #14 - 標準入力(Scanner クラス)

入門 | 10分 で読める | 2026.05.02

公式ドキュメント

今回やること

Scannerを使うと、コンソールへ入力された文字をJavaプログラムで読めます。今回は名前と年齢をどちらもnextLine()で読み、年齢だけ後から整数へ変換します。

前提: Java入門 #13 - コンストラクタまでを終え、文字列と変数を使えること。

キーボード入力 → Scanner.nextLine() → String → 必要なら数値へ変換

1. Scannerを作る

Scannerjava.utilからimportします。System.inは標準入力です。

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);

完成例では、入力を読み終えた最後にscanner.close()を呼びます。System.inを閉じると後から再利用できないため、アプリ全体で1つを使い、途中で何度も作り直さないようにします。

2. nextLineで1行読む

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

nextLine()はEnterまでの1行を文字列として返します。空白を含む「Ada Lovelace」も1つの文字列として読めます。

年齢も最初は文字列で読みます。

System.out.print("年齢: ");
String ageText = scanner.nextLine();

入力方法をnextLine()へそろえると、「数値の直後に改行だけが残る」という混乱を避けやすくなります。

3. 数値へ変換する

int age = Integer.parseInt(ageText);

"16"は整数16へ変換できますが、"sixteen"や空文字は変換できずNumberFormatExceptionになります。

今回は入力を読む流れに集中するため、数値以外を入力すると例外が表示されてプログラムは終了します。失敗を安全に処理する方法は#19 - 例外処理の基本で学びます。

完成コードを動かす

ScannerDemo.javaとして保存します。

import java.util.Scanner;

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

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

        System.out.print("年齢: ");
        String ageText = scanner.nextLine();

        int age = Integer.parseInt(ageText);
        System.out.println(name + "さんは" + age + "歳です");

        scanner.close();
    }
}
javac ScannerDemo.java
java ScannerDemo

表示された順に名前、年齢、Enterを入力します。

成功確認

Ada16を入力した場合、最後に次が表示されれば成功です。

Adaさんは16歳です

年齢へabcを入力した場合はNumberFormatExceptionが表示されて終了します。この段階では想定どおりの失敗です。

nextInt後に改行が残る問題

nextInt()は整数だけを読み、Enterの改行を残します。その直後のnextLine()は残った改行を読み、空文字になることがあります。

int age = scanner.nextInt();
scanner.nextLine(); // 残った改行を読み捨てる
String name = scanner.nextLine();

この対処もできますが、初学者は完成例のようにすべてnextLine()で読み、必要な値だけ変換すると入力の流れを追いやすくなります。

よくあるつまずき

何も入力していないように見える

nextInt()の後なら、残った改行をnextLine()が読んだ可能性があります。入力メソッドの混在を確認します。

数字以外でプログラムが落ちる

Integer.parseIntは変換できない文字列でNumberFormatExceptionを投げます。まず整数を入力して完成コードを確認し、例外の処理は#19で追加します。

Scannerを毎回作る

同じSystem.inに複数のScannerを作ると入力管理が複雑になります。1つを必要な処理へ渡します。

練習

商品名と個数を2行で読み、個数をInteger.parseIntで変換して「ノートを3個」のように表示してください。最初は整数だけを入力します。

次のステップ

Java入門 #15 - ArrayListで、入力された値を後から追加できるリストへ保存します。

入力失敗時の処理は、Java入門 #19 - 例外処理の基本で学びます。

参考リソース

← 一覧に戻る
PR
PR
PR
PR