5

私はJavaが初めてで、ユーザーが整数を入力するまでユーザー入力を求め続けたいと思っていたので、InputMismatchExceptionはありません。このコードを試しましたが、整数以外の値を入力すると例外が発生します。

int getInt(String prompt){
        System.out.print(prompt);
        Scanner sc = new Scanner(System.in);
        while(!sc.hasNextInt()){
            System.out.println("Enter a whole number.");
            sc.nextInt();
        }
        return sc.nextInt();
}

御時間ありがとうございます!

4

5 に答える 5

10

nextの代わりに を使用して入力を取得しnextIntます。parseInt メソッドを使用して入力を解析するための try キャッチを配置します。解析が成功した場合は while ループを中断し、それ以外の場合は続行します。これを試して:

        System.out.print("input");
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("Enter a whole number.");
            String input = sc.next();
            int intInputValue = 0;
            try {
                intInputValue = Integer.parseInt(input);
                System.out.println("Correct input, exit");
                break;
            } catch (NumberFormatException ne) {
                System.out.println("Input is not a number, continue");
            }
        }
于 2013-10-02T04:58:21.800 に答える
5

Juned のコードに取り組んで、コードを短くすることができました。

int getInt(String prompt) {
    System.out.print(prompt);
    while(true){
        try {
            return Integer.parseInt(new Scanner(System.in).next());
        } catch(NumberFormatException ne) {
            System.out.print("That's not a whole number.\n"+prompt);
        }
    }
}
于 2013-10-02T06:03:59.453 に答える