关于try catch的理解
来源:2-1 从键盘接收数据
jia_蛙
2019-07-23 13:11:31
老师 我可以这样理解吗?
当for循环时,用户输入的数据类型与我们所要求的数据类型一致时,它不会走catch,
当与我们所要求的数据类型不一致时,就会发生异常,就会走cathc,这个时候,因为不满足我们的条件,
a[i] = sc.nextInt();中的 a[i]是没有被赋值的,但是因为用户键入了一个值,这个值必须得有地方去
接收,不接收得话,这个值会在下一次循环的时候直接跳过用户键入,直接到下一次判断,然后因为
数据类型不符,所以又一次的 走 catch。所以为了避免这个循环,我们必须用一个东西来接受它,所以
我们使用sc.next(); 虽然我们接收了,但是我们并没有赋值给其他任何变量。当我们接收了这个用户键入的
值,输出错误提示之后,再次循环时,因为已经接收了错误值,所以不会照成这种“堵塞”状态了。
老师你帮我看看 是不是这样理解 ps:话有点啰嗦
我还有一个问题: 就是为了什么这里用next()而不是nextline() ,
是因为next()的效率更高还是都可以只是视频上老师用的是next()呢?
1回答
同学你好,1、同学关于try-catch中接收异常数据的理解是正确的哦,当输入要求的数据类型不一致的异常数据时,需要使用sc.next()方法来接收这个异常数据哦!
2、关于next方法和nextLine方法的区别:
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动过滤!
nextLine()方法的结束符只是Enter键,就会得到Enter之前的所有内容,包括空格!
所以这里我们会使用next方法,获取到一个有效字符哦!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题