关于视频中的代码问题

关于视频中的代码问题

在判断价格是否输入为数字时,为什么加一个console.next上面输入的编号的console.next就是正确的呢,Scanner类读取数据是怎样的呢 不是很理解,希望老师解答一下

正在回答 回答被采纳积分+1

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

1回答
chrismorgen 2018-07-22 09:57:32

因为Scanner类中有很多接收数据的方法,譬如nextDouble方法就是专门用来接收double类型的数据,如果你接收一个字符串,nextDouble方法就会抛出异常,所以老师在catch语句中将错误的信息接收一下,就可以使nextDouble方法继续接收double类型的数据,如果不用console.next方法,nextDouble方法就会一直抛出异常,因为录入的错误数据没有被接收。如果我的建议解决了你的问题,请采纳,祝学习愉快~

  • 我觉得您这样解释并不对,我的理解是nextDouble方法抛出异常后,该方法就结束了,然后catch捕捉到了异常执行里面的语句,如果不执行console.next()方法,由于上面异常时输入的数据并没有输入完成,那么再次调用输入方法时,该输入值就会被默认认为为此次输入的值,如果增加了console.next()则由这个输入方法接受了上面错误的信息
    2018-09-20 00:45:45
  • 同学是觉得哪里解释的不对呢?可以把觉得不理解的地方指出来,通读了你的理解,我认为你的理解很到位,跟我解释的意思是一样的呀,我解释的意思也就是说“因为录入的错误数据没有被接收”所以nextDouble方法会一直抛出异常,那么使用console.next方法接收错误信息后就不会抛出异常了,祝学习愉快~
    2018-09-20 09:45:20
  • 老师,我认为nextDouble并没有一直抛异常,它只会抛一次异常,然后被捕获,由于他当时是scanner输入信息,这个信息已经输入到控制台了,在调用输入的方法时候,它会认为上次输入的内容就是这次输入的内容
    2018-09-20 10:15:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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