LoginSignup
0
0

More than 1 year has passed since last update.

[Java入門] コンソールアプリ用Scanner 備忘録

Posted at

コンソールアプリ用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();

最後に

ミス等ありましたら修正します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0