关于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 @   Liku007  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示