SevenHW 2021-05-18 22:09 采纳率: 50%
浏览 243
已采纳

while循环中try...catch死循环

public class test {
    public static void main(String[] args) {
        Scanner sv = new Scanner(System.in);
        while (true) {
            System.out.println("请输入值");
            try {
                int index = sv.nextInt();
                show(index);
                break;
            } catch (asd e) {
                System.out.println(e.toString());
                continue;
            } catch (InputMismatchException e) {
                System.out.println("输入错误");
                continue;
            }
        }

    }

    public static void show(int i) {
        if (i < 10) {
            System.out.println(i);
        } else {
            throw new asd("请输入一个小于10的数");
        }

    }
}


//异常
public class asd extends RuntimeException {
    public asd() {

    }

    public asd(String message) {
        super(message);
    }
}

 当输入小于10 的时候,代码会结束while循环

输入大于10 的时候,会一直让重新输入

输入字符的时候,会捕获异常进入死循环

怎么才能解决这个死循环,捕获输入错误,并重新输入

  • 写回答

6条回答 默认 最新

  • CSDN专家-Time 2021-05-18 22:10
    关注

    因为你while true啊

    所以抓到异常了之后,被catch处理掉了 程序不会停止 然后又到循环头部了

    如果你不用try catch,直接获取int之后show 一下,就直接抓到异常 程序就终止了。

    try catch就是为了防止程序异常终止。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥15 小红薯封设备能解决的来
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'
  • ¥15 vue+element项目中多tag时,切换Tab时iframe套第三方html页面需要实现不刷新
  • ¥50 深度强化学习解决能源调度问题