Java コンソールから文字列を入力する(Scannerクラス)

Javaのコンソールから文字列を入力するサンプルです。(確認環境:Java 8,Eclipse 4.8)

目次

サンプル コンソールから文字列を入力する
  複数の行を入力する
  複数の行を入力する(ループを使用)
  InputStreamReaderとBufferedReaderを使用する

コンソールから文字列を入力する

コンソールから文字列を入力するサンプルです。
Scannerクラスを使用します。

package test1;
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        
        System.out.println("入力してください。");

        Scanner sc1 = new Scanner(System.in);
        String line1 = sc1.nextLine();
        
        System.out.println("入力した文字は=" + line1);
    }
}

9行目は、Scannerクラスを使用しています。
10行目は、nextLineメソッドで入力した文字列を取得しています。

 

コンソールからの入力イメージ

上記コードを実行した時のコンソールからの入力イメージです。

1.ユーザー入力の受付待ちになります。

2.文字を入力してエンターキーを押します。

3.結果が表示されます。

 

複数の行を入力する

複数の行を入力するサンプルです。

package test1;
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        
        System.out.println("入力してください。");

        Scanner sc1 = new Scanner(System.in);
        String line1 = sc1.nextLine();
        String line2 = sc1.nextLine();
        int line3 = sc1.nextInt();
        
        System.out.println("入力した文字は=" + line1);
        System.out.println("入力した文字は=" + line2);
        System.out.println("入力した数値は=" + line3);
    }
}

10~12行目のようにnextLineメソッドを続けると、複数の行を入力できます。
12行目のnextIntメソッドは、int型の数値として取得します

 

入力イメージ

上記コードを実行したイメージです。

 

複数の行を入力する(ループを使用)

ループを使用して複数の行を入力するサンプルです。

package test1;
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        
        System.out.println("入力してください。");
        String line1;
        
        Scanner sc1 = new Scanner(System.in);
        while(sc1.hasNext()){
        	line1 = sc1.next();
        	System.out.println("入力した文字は=" + line1);
        }
    }
}

11行目は、whileとhasNextメソッドでループにしています。
ループから抜ける場合は、Ctrl + Zを押します。(Windows)
または、if文の判定とbreakで抜ける処理を追加します。

 

入力イメージ

上記コードを実行したイメージです。
※Eclipse4.8では、ループが終了した場合は左上に「終了」と表示されます。

 

InputStreamReaderとBufferedReaderを使用する

InputStreamReaderとBufferedReaderを使用するサンプルです。
コンソールから文字列を入力し、その文字列を表示します。

package test1;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test1 {
    public static void main(String[] args) {
        
    	String moji;
        System.out.println("入力してください。");
        
        try(InputStreamReader is = new InputStreamReader(System.in);
        	BufferedReader reader = new BufferedReader(is);){
            moji = reader.readLine();
            System.out.println("入力した文字は=" + moji);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

13,14行目は、try-with-resources構文です。リソースを自動でクローズします。
13行目に、System.inがあります。

以下はJava8 API仕様のScannerクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html

以下はJava8 API仕様のSystemクラスのinフィールドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/System.html#in

関連の記事

Java テキストファイルの読み書き(Filesクラス)

△上に戻る