如果存在InputMismatchException,为什么此代码会继续循环?

时间:2017-08-25 06:47:59

标签: java inputmismatchexception

如果存在InputMismatchException,为什么此代码会继续循环? 输入零时,catch有效,但如果输入字符串,则循环变为无限。

import java.util.*;  
public class TryCatch
{   
    public static void main(String args[])      
    {       
        int age, age2, sum;         
        boolean repeat=true;        

        Scanner input = new Scanner(System.in);                 
        do
        {               
            try
            {
                System.out.println("Enter age: ");              
                age = input.nextInt();              
                System.out.print("Enter age2: ");               
                age2 = input.nextInt();                 
                sum = age / age2;               
                System.out.print(sum);          
                repeat=false;
            }           
            catch (Exception e)
            {           
                System.out.println("Your error is "+e+"\n Try again");                  
            }       
        }       
        while(repeat == true);  
    } 
}

2 个答案:

答案 0 :(得分:0)

在评论澄清后编辑:

扫描程序保存导致异常的值,以及在以下循环中再次触发它的原因。

要获得您所寻求的内容,您需要重置扫描仪内容并转到下一个输入,因此请更改您的catch块:

        catch (Exception e)
        {           
            System.out.println("Your error is "+e+"\n Try again");
            input.reset();
            input.next();
        }    

OLD:

因为当异常发生时(不是输入中的int ),程序会跳过try块中的其余代码(当然还有停止循环的部分),并执行catch块中的代码,它只是打印一条错误消息。

在catch主体中,您需要设置repeat=false;以使while指令停止重复。

答案 1 :(得分:0)

要正确捕捉错误号码,

怎么样?
int result = Integer.parseInt(number)

您创建一个整数对象,如果您的输入可能是10A,则会抛出一个NumberFormatException