为了账号安全,请及时绑定邮箱和手机立即绑定

关于java中scanner对象重复使用的问题

手机拍的,电脑无法上网,见谅。

58b7c01d0001788506580493.jpg
我是这样理解的:创建一个scanner对象,可以重复使用。
但我刚刚写了另一段代码,却出现问题

58b7c0d10001b2e506580493.jpg
创建一个整数i和scanner对象,然后输入一个数赋值给i,如果是整数就break退出循环,如果不是整数就抛出异常,再次循环。
但执行后,输入整数就正常,不是整数,会一直死循环“请输入整数”。
但我发现,如果把创建scanner对象这一行放在如图标记中的位置,也就是try里面,结果就正常。
请问这是为什么?难道要重复建立scanner对象?scannner不是可以重复使用的吗?

正在回答

2 回答

照你这么写,应该在异常处理中加一句scanner.nextLine().把扫描器的角标引向下一行,另外放到里面是新创建了一个对象的中的输入文本都不是这个新对象的东西了。还有建议异常是用来处理异常的,不是用来处理正常语句的,这个习惯不好。

1 回复 有任何疑惑可以回复我~
#1

慕粉4241372 提问者

请问我这个异常里面怎么写比较规范呢?
2017-03-06 回复 有任何疑惑可以回复我~
#2

慕粉4241372 提问者

还有请问为何我举得第一个例子不用加入scanner.(nextline)换行?
2017-03-06 回复 有任何疑惑可以回复我~
#3

CatzzZ 回复 慕粉4241372 提问者

首先你的第一个例子,是没有异常的,Scanner,当成功“接受”第一个输入的数后就相当于,光标指向了下一行,等待下一次输入,所以没有问题。而当你输入的类型和赋值的不匹配就会发生异常。
2017-03-06 回复 有任何疑惑可以回复我~
#4

CatzzZ 回复 CatzzZ

然后关于异常是用来维护代码代码健壮性,也就是说,当程序发成了错误,我该怎么去解决这个错误,所以一般是用作处理的异常语句,一般到后期异常里放的东西一个是throw new RuntimeException(e) ; 把异常转化为运行时异常,用于当程序出错时,调错用。当然练习的话,怎么思路顺畅怎么来。一般做文本输入其实都不用Scanner这个类,不太安全,也不太好处理,因为不能控制要输什么才是正确的 , 一般都用BufferedReader这个类做输入,再加上正则表达式之类的判断语句,判断用户输入的是否合法。
2017-03-06 回复 有任何疑惑可以回复我~
查看1条回复

加一个finally试试


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于java中scanner对象重复使用的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信