キーボードからの入力

標準入力, 標準出力

System.in から読むことで、キー入力を実現可能。 ただし、キーを押すと即座に反応するタイプのプログラムをつくる場合には KeyListener など別の枠組みを利用。

準備

文字コード utf-8 で eclipse を使っている場合には、 そのままではコンソールからキー入力すると文字化けした状態で入力される。 eclipse.exe と同じフォルダにある eclipse.ini に以下の1行を追加する。

-Dfile.encoding=UTF-8

サンプル

Scanner もしくは InputStreamReader クラスを使う。

キーボードから1行入力されると、それをそのまま表示するプログラム (増田先生のサンプルの改造版)。 Enter のみの入力で終了する。

import java.io.*;

public class Echo {
    private static BufferedReader userInputStreamReader;           
    static {                  
	userInputStreamReader = new BufferedReader(new InputStreamReader(System.in)); 
    }
    /** System.in (通常キーボード) から1行読み込む */
    private static String readLine() {
	String inputString = "";         // エラー時には null ではなく "" になる
	try {
	    inputString = userInputStreamReader.readLine();
	}
	catch (Exception e) {
	    e.printStackTrace();
	}
	return inputString;
    }
    /** サンプルの main */
    public static void main(String[] args) {
	String line;
	
	while(true) {
	    line = readLine();
	    if(line.equals(""))          // 空行なら終了
		break;
	    System.out.println(line);
	}
    }
}

Echo.java

readLine()で一行読み込む。 static メソッドなので、インスタンスなしで使用可能。