
代码需求很简单,输入一个数字并打印出来,如果输入的不是数字,那么就一直循环。实现的方法有很多,偶然间发现这段代码会出现让我难以理解的bug,希望大佬们指点指点
代码如下:
static void read1(){
Scanner scan =new Scanner(System.in); while(true){ int n; System.out.print("enter a number:"); try { n =scan.nextInt(); }catch(InputMismatchException e){ continue; } System.out.println(n); break; } }如果你输入的不是数字,他就会捕获异常继续循环。如果是他就会输出,结束循环
运行结果给出来
你这异常就没捕获对,
还有这不叫java代码的bug,这是人为的bug
是异常就continue跳过本次循环,但不会结束;是数字正常执行走break结束循环