输入一个double后,跳入catch块,完成后因为while再回到try块,可debug后发现进入try块后,没有让用户输入直接又跳到catch,为什么?
因为你的 finish = true 这行代码根本没有执行。所以while里面一直是真,一直会循坏抛出异常。
因为Scanner是扫描控制台的文字,然后有回车的话就开始读取,然后再读取下一行.所以问题就来了,你用nextInt去读取控制台的文字,如果是int类型那么
就不会有问题,但是如果是其他类型的话就会抛出异常,然后控制台的那个文字就没有读,然后就会一直循环重复nextInt,所以你的finish就一直未false.
你试试在catch那里加一句in.next();就会看到效果了.
当然 你没有输入而它又是个循环,会无限循环,在程序执行时你输入正确值就ok执行try中的内容
好奇怪,竟会对i一直赋double值。
说明你输入的不是合法的整型数,从而抛出了InputMismatchException,即输入格式不匹配