关于try...catch里面input出现死循环

出现死循环:

private static double divede() {
    Scanner input=new Scanner(System.in);
    while (true){
    try {
        System.out.println("请录入第一个数");
        int num1=input.nextInt();
        System.out.println("请录入第二个数");
        int num2=input.nextInt();
        if(num2==0)
            throw new ArithmeticException("除数不能为零");
  //由于这个异常没有被catch住,因此除数为零的时候直接结束
        return num1/num2;

    } catch (InputMismatchException e) {
        System.out.println("输入不合法,请重新录入");
        input.next();
        /*不加这一行的话数据缓冲区内上次输入的异常还在
         并没有清除,这时继续异常
         就又catch到exception,还是错误
         于是这个过程就一直重复下去了
         需要加这一行清除抓到的exception*/
    }
}
}

也可以将input的定义放在try里面

posted @ 2022-10-25 00:23  Liku007  阅读(53)  评论(0)    收藏  举报