Java 如何修复输入不匹配异常

Java 如何修复输入不匹配异常,java,error-handling,io,Java,Error Handling,Io,所以我有这个代码: protected void giveNr(Scanner sc) { //variable to keep the input int input = 0; do { System.out.println("Please give a number between: " + MIN + " and " + MAX); //get the input input = sc.nextInt(); } while

所以我有这个代码:

protected void giveNr(Scanner sc) {
    //variable to keep the input
    int input = 0;
    do {
      System.out.println("Please give a number between: " + MIN + " and " + MAX);
      //get the input
      input = sc.nextInt();
    } while(input < MIN || input > MAX);
}
protected void giveNr(扫描仪sc){
//变量来保持输入
int输入=0;
做{
System.out.println(“请给出一个介于“+MIN+”和“+MAX”之间的数字);
//获取输入
输入=sc.nextInt();
}同时(输入<最小值| |输入>最大值);
}

如果人工输入的不是整数,比如字母或字符串,程序就会崩溃并给出错误,
InputMismatchException
。如何修复它,以便在输入错误类型的输入时,再次向用户请求输入(并且程序没有崩溃?

您可以捕获
输入不匹配异常,打印一条错误消息,告诉用户出了什么问题,然后再次循环:

int input = 0;
do {
    System.out.println("Please give a number between: " + MIN + " and " + MAX);
    try {
        input = sc.nextInt();
    }
    catch (InputMismatchException e) {
        System.out.println("That was not a number.  Please try again.");
        input = MIN - 1; // guarantee we go around the loop again
    }
while (input < MIN || input > MAX)
int输入=0;
做{
System.out.println(“请给出一个介于“+MIN+”和“+MAX”之间的数字);
试一试{
输入=sc.nextInt();
}
捕获(输入不匹配异常e){
System.out.println(“那不是一个数字,请再试一次。”);
input=MIN-1;//保证我们再次循环
}
同时(输入<最小值| |输入>最大值)