JavaのScannerオブジェクトがスキップする問題の解決方法


  1. 入力を正しく区切る: Scannerオブジェクトは、デフォルトでは空白文字(スペース、タブ、改行)で入力を区切ります。しかし、入力が異なる形式で与えられる場合、正しく区切れない可能性があります。

例えば、カンマで区切られた値を処理する場合、Scannerオブジェクトのデリミタ(区切り文字)をカンマに設定することができます。

Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(",");

このように設定することで、カンマで区切られた入力を正しく処理することができます。

  1. nextLine()を利用する: nextLine()メソッドを使用することで、改行までの全ての入力を取得することができます。次に、取得した入力を必要な形式に変換することができます。
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
// 入力の変換や処理を行う
Scanner scanner = new Scanner(System.in);
int input = 0;
while (true) {
    try {
        input = scanner.nextInt();
        break;
    } catch (InputMismatchException e) {
        System.out.println("正しい形式で入力してください。");
        scanner.next(); // 入力をスキップする
    }
}