一次输入会导致多次异常

一次输入会导致多次异常

http://img1.sycdn.imooc.com//climg/5d11bec80001a2fd09440743.jpg

为什么会循环到底部,能不能回答详细一点?Scanner本身接收的数据保存在内存中,数据匹配就赋值给接收的变量,像这种接收设置为Int类型我输入了String类型,数据类型不匹配,跳转到catch提示数据错误,下次循环中,内存中的数据自动赋值了,所以一直循环到最后,我的理解对不对,请老师指导一下

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

        同学你好,1、同学的理解是对的,在下一次循环中键盘输入的这个错误的值自动与sc.nextInt()自动匹配,依旧发生异常,继续向下执行~

        2、这里需要在catch语句中添加两句代码哦!  sc.next();  continue;这两句哦!

        3、这里出现输入错误,就会抛异常,进入到catch中。而在catch中的语句,首先是提示用户输入的有误,然后需要sc.next() 把之前输入的错误数据给接收下来,以便于让用户再重新输入数字,如果不把之前输入的错误数据的接收下来,当再次循环进入try的时候,之前输入错误数据还会在,遇到nextInt就还会报错,进入死循环。而在catch中用sc.next() 后,就可以把之前输入非数字接收了,这样使用continue跳过此次循环,进行下一次让用户重新输入就可以了。

        如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师