为什么下面的程序会在异常出现后一直循环输出蓝色那句话…

输入一个double后,跳入catch块,完成后因为while再回到try块,可debug后发现进入try块后,没有让用户输入直接又跳到catch,为什么?图片说明图片说明

因为你的 finish = true 这行代码根本没有执行。所以while里面一直是真,一直会循坏抛出异常。

因为Scanner是扫描控制台的文字,然后有回车的话就开始读取,然后再读取下一行.所以问题就来了,你用nextInt去读取控制台的文字,如果是int类型那么
就不会有问题,但是如果是其他类型的话就会抛出异常,然后控制台的那个文字就没有读,然后就会一直循环重复nextInt,所以你的finish就一直未false.
你试试在catch那里加一句in.next();就会看到效果了.

当然 你没有输入而它又是个循环,会无限循环,在程序执行时你输入正确值就ok执行try中的内容

好奇怪,竟会对i一直赋double值。

说明你输入的不是合法的整型数,从而抛出了InputMismatchException,即输入格式不匹配