使用扫描仪键入错误的数据类型时如何停止异常

use*_*329 1 java exception

有人可以告诉我如何防止这种情况:

"Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:909) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.nextInt(Scanner.java:2160) at java.util.Scanner.nextInt(Scanner.java:2119) at JeffSky.main(JeffSky.java:25)" 当用户输入一个整数的字母时。

基本上,我试图找出即使输入了错误的数据类型也能保持程序运行的方法。就像您可以执行if语句来通知用户,如果用户输入的int超出给定范围(例如1-10),则不允许这样做。

for(int x = 1; x <= 3; x ++){

int guess;
        System.out.print("Your chosen trap is: "); 

        do{
            guess=sean.nextInt();

            if(guess>=1 && guess<=6){   
                //do nothing if is a valid number i.e a trap between 1 and 6.
            }                                           
            else {
                System.out.print("Has to be between 1-6. Try again: ");
            }
        }

        while(guess<1 || guess>6);
Run Code Online (Sandbox Code Playgroud)

干杯

Rad*_*def 5

nextInt的InputMismatchException表示输入不是int。你可以抓住它

这将循环直到输入为1到6之间的数字为止:

do {

    try {
        guess = sean.nextInt();

        if (guess >= 1 && guess <= 6) break;

    } catch (InputMismatchException e) {
    } finally {
        sean.nextLine();
    }

    System.out.print("Input must be a number between 1 and 6: ");
} while (true);
Run Code Online (Sandbox Code Playgroud)

旁注:调用nextInt还将孤立一个新的行字符,因此nextLine前进。