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

来源:7-1 简易扑克牌游戏

慕粉4241372

2017-03-02 14:56

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

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

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

写回答 关注

2回答

  • CatzzZ
    2017-03-06 00:27:19
    已采纳

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

    CatzzZ 回复CatzzZ

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

    2017-03-06 22:28:50

    共 4 条回复 >

  • 汉江怪人
    2017-03-02 20:47:08

    加一个finally试试


Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题