コンソールアプリ用Scanner 備忘録
概要
Java入門者が作成するコンソールアプリにおいて、標準入力で操作する際に用いるScannerクラス。
サンプルコードを見様見真似で実装し、1度close()してしまうと、もう標準入力を受け付けません。
close()せず標準入力の度にScannerを作れば解決ではあるのですが、ちょっと格好悪い。
そこで、Scannerを管理するクラスを作り、毎回利用しましょう。
実装例
ScannerManager.java
public class ScannerManager {
/** スキャナーの宣言 */
private Scanner stdin = null;
/** スキャナーのインスタンス */
public static ScannerManager instance = new ScannerManager();
/** スキャナーのインスタンスを取得 */
public static ScannerManager getInstance() {
return instance;
}
/** Scannerを取得 */
public Scanner getScanner() {
return stdin;
}
/** 標準入力を開く */
public void openScanner() {
stdin = new Scanner(System.in);
}
/** 標準入力を閉じる */
public void closeScanner() {
if (stdin != null) {
stdin.close();
}
}
/** newできなくする */
private ScannerManager() {
}
}
Scannerクラスは上の通りです。Exception対応は各自やってください。
あとはメインの最初でOpenしてインスタンスを生成し、最後にCloseします。
Main.java
public static void main(String[] args) {
try {
//Scannerを開く
ScannerManager.getInstance().openScanner();
//
//好きに実装
//
//Scannerを閉じる
ScannerManager.getInstance().closeScanner();
} catch (IOException e) {
System.out.println(e);
}
}
あとは標準入力を受け付けたいところで、ScannerManagerを呼ぶだけです。
Scanner sc = ScannerManager.getInstance().getScanner();
String line = sc.nextLine();
最後に
ミス等ありましたら修正します。