🧤

【Java】Scannerクラス とは (備忘録)

に公開

1.はじめに

ユーザーがキーボードで入力した内容や、ファイルの内容を読み取る際に使用します。
Scannerクラスは、java.utilパッケージに配下に属しています。
 使用する場合は、パッケージimportする必要があります。

Scannerクラスの使用方法
import java.util.Scanner;

// Scannerインスタンス(オブジェクト)作成
Scanner scanner = new Scanner(System.in);

2.サンプルプログラム

〇例1:キーボードから入力した1行分の文字列を受け付ける

Sample_1.java
import java.util.Scanner;

public class Sample_1 {
    public static void main(String args[]) {
        // Scannerインスタンス(オブジェクト)作成
        Scanner scanner = new Scanner(System.in);

        // nextLine():1行の文字列を読み取る
        System.out.println("名前を入力してください。");
        String name = scanner.nextLine();
        System.out.println("入力した氏名は" + name +"です。");

        // scannerインスタンスを閉じる
        scanner.close();
    }
}

〇例2:close メソッド使用後にキーボードからの入力を受け付けるか確認

Sample_2.java
import java.util.Scanner;

public class Sample_2 {
    public static void main(String args[]) {
        // Scannerインスタンス(オブジェクト)作成
        Scanner scanner_1 = new Scanner(System.in);

        System.out.println("名前を入力してください。");
        String name_1 = scanner_1.nextLine();
        System.out.println("入力した氏名は" + name_1 + "です。");

        // scannerインスタンスをクローズ
        scanner_1.close();

        // Scannerインスタンス(オブジェクト)再作成
        Scanner scanner_2 = new Scanner(System.in);
        System.out.println("名前を入力してください。");
        String name_2 = scanner_2.nextLine();
        System.out.println("入力した氏名は" + name_2 + "です。");   
    }
}

・実行結果

〇例3:nextLine()メソッド と next()メソッドを併用

Sample_3.java
import java.util.Scanner;

public class Sample_3 {
    public static void main(String args[]) {
        // Scannerインスタンス(オブジェクト)作成
        Scanner scanner = new Scanner(System.in);

        // nextLineメソッド
        System.out.println("名前を入力してください。");
        String name_1 = scanner.nextLine();
        System.out.println("あなたの氏名は、" + name_1 + "です");
        
        // nextメソッド
        System.out.println("再度、名前を入力してください。");
        String name_2 = scanner.next();
        String name_3 = scanner.next();
        System.out.println("あなたの姓は、" + name_2 + "です");
        System.out.println("あなたの名は、" + name_3 + "です");

        scanner.close();
    }
}

・実行結果

〇例4:複数メソッドと try/catch を併用

Sample_4.java
import java.util.Scanner;

public class Sample_4 {
    public static void main(String args[]) {
        // 変数初期化
        int age = 0;
        double height = 0.0;
        String flag = "Yes";

        // Scannerインスタンス(オブジェクト)作成
        Scanner scanner = new Scanner(System.in);

        // nextLine():1行の文字列を読み取る
        System.out.println("名前を入力してください。");
        String name = scanner.nextLine();

        System.out.println("あなたは社会人ですか。(Yes/No)");
        String isWorkingAdult = scanner.nextLine();

        // nextBoolean():真偽型
        System.out.println("あなたは大学生ですか。(True/False)");
        boolean isStudent = scanner.nextBoolean();

        try {
            System.out.println("年齢を入力してください。");
            // nextInt():整数を読み取る
            age = scanner.nextInt();
            
            System.out.println("身長をcm単位で小数点第一位まで入力してください。");
            // nextDouble():小数を読み取る
            height = scanner.nextDouble();
        } catch (Exception e) {
            System.out.println("正しい形式で入力してください。");
        }

        System.out.println("あなたの氏名は、" + name + "です。");
        System.out.println("あなたの年齢は、" + age + "歳です。");
        System.out.println("あなたの身長は、" + height + "cmです。");

        if (isWorkingAdult.equalsIgnoreCase(flag)) {
            System.out.println("社会人の方は、こちらから入場可能です。");
        } else if (isStudent) {
            System.out.println("大学生の方は、こちらから入場可能です。");
        } else {
            System.out.println("入場不可です。");
        }   

        // scannerインスタンスをクローズ
        scanner.close();
    }
}

〇例5:scanner.nextLine(); を使用しバッファをクリア

Sample_5.java
import java.util.Scanner;

public class Sample_5 {
    public static void main(String args[]) {
        // Scannerインスタンス(オブジェクト)作成
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("年齢を入力してください。");
        int age = scanner.nextInt();
        // バッファをクリア
        scanner.nextLine();
    
        System.out.println("名前を入力してください。");
        String name = scanner.nextLine();

        System.out.println("あなたの年齢は、" + age + "歳です。");
        System.out.println("あなたの氏名は、" + name + "です。");

        // scannerインスタンスを閉じる
        scanner.close();
    }
}

3.参考

#3 00:31:30 user input ⌨️
Scannerクラスを新人エンジニアに解説
【Java】ユーザー入力処理を行うScannerクラスの使い方
標準入力のScannerを1度closeしたら、2度と標準入力できない理由を調べた
JavaのScannerクラスの入力メソッドの比較

4.その他

実行環境

Discussion