try catch中的死循环问题

上周学了下java中的异常遇到些问题,分享出去给大家参考下

直接上代码

错误的代码:

Scanner sc = new Scanner(System.in);

while(true){
    try {
        int x = sc.nextInt();
    } catch {
        System.out.println("输入错误,请重新输入!")
    }

}

原因:当输入正确的时候肯定没有任何问题,可是当输入错误的话,就会一直出现   “输入错误,请重新输入”

因为当你输入错误开始下一次循环时,此时的数据还停留在缓冲区上,并没有清除,这时继续解析异常,就又catch到exception,还是错误,于是这个过程就一直重复下去了。

解决办法:

  1. 在添加sc.next();
  2. 把输入写在循环中;
//这是第一种解决办法


while(true){

    Scanner sc = new Scanner(System.in);

    try {
        int x = sc.nextInt();
    } catch {
        System.out.println("输入错误,请重新输入!")
    }

}

Scanner sc = new Scanner(System.in);

猜你喜欢

转载自blog.csdn.net/qq_42371196/article/details/82832186