捕获异常后请求输入

h-r*_*rai 6 java java.util.scanner numberformatexception inputmismatchexception

我希望用户输入一个由以下代码扫描的数字:

scanner.nextInt();
Run Code Online (Sandbox Code Playgroud)

如果用户输入字符串,则程序会抛出InputMismatchException,这很明显.我想以这样的方式捕获异常,即程序提示用户输入输入,直到用户输入整数值.

Scanner scanner = new Scanner(System.in);
while(true) {
    try {
        System.out.println("Please enter a number: ");
        int input = scanner.nextInt();
        System.out.println(input);
        //statements
        break;
    }
    catch(InputMismatchException | NumberFormatException ex ) {
        continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果输入字符串,此代码将创建无限循环.

sp0*_*00m 3

放入Scanner scanner = new Scanner(System.in);你的循环中while

Scanner scanner;
while(true) {    
    try {
        System.out.println("Please enter a number: ");
        scanner = new Scanner(System.in);
        int input = scanner.nextInt();
        System.out.println(input);
        //statements
        break;
    }
    catch(InputMismatchException | NumberFormatException ex ) {
        System.out.println("I said a number...");
    }
}
Run Code Online (Sandbox Code Playgroud)