nextInt()方法在无限循环中,无法停止的问题
2016-08-11 14:30
225 查看
//导包 import java.util.Scanner; class ScannerDemo { public static void main(String[] args) { //创建键盘录入 Scanner scanner = new Scanner(System.in); //希望获取键盘录入的数字 System.out.println("请输入一个0-9的数字:"); /** nextInt()方法可能抛出的3种异常 1.InputMismatchException - if the next token does not match the Integer regular expression, or is out of range 2.NoSuchElementException - if input is exhausted 3.IllegalStateException - if this scanner is closed */ //建立外层无限循环 while(true) { try { //首先采用nextInt方法,当采用该方法时,如果输入了字母,就会一直提示"您的输入有误,请重新输入数字0-9" //int num = scanner.nextInt(); //采用next()方法,和Integer包装器的parseInt方法,获取输入的值,实现了这种想法 /** 原因是:(摘自百度知道(作者_泳天幻少)): http://zhidao.baidu.com/link? url=Lq2g1_JH6oFTZZCzWjivQktRwOGr6qkPgwAE9XuPVGSXTgDyWt1D4RltM3o3LZmTzm_XBMZX1BtlOeuL7bNVh7yR5SPEkQ6HsSJXpeZT_Ae) 出现InputMismatch后一直循环: 当扫描器抛出 InputMismatchException 时,该扫描器不会传递导致该异常的标记,因此可以通过其他某种方法来获取或跳它。 这是java API文档中的原话。 意思是说,如果nextInt方法没有成功解析出一个整数,那么你的输入不会被忽略。因为它或许能被其它格式解析。 那么你的程序中输入了a后,出现异常,number被赋值100,开始下一次循环,但这时数据缓冲区内你上次输入的a还在,并没有清<span style="white-space:pre"> </span>除,这时继续解析a,还是错误,于是这个过程就一直重复下去了。 现在你要改的是,出现错误把这次的输入清除,只要在catch中,加一句:input.next()就搞定了! 也可以将Scanner写在try里面 */ int num = Integer.parseInt(scanner.next()); if (!(num >= 0 && num <= 9)) { //如果输入的数字不符合需求,提示错误后,继续等待录入 System.out.println("您的输入有误,请重新输入数字0-9"); continue; } else { System.out.println("num =" + num); break; } } catch (Exception e) { //发生异常后希望给出提示,继续录入 System.out.println("您的输入有误,请重新输入数字0-9"); continue; } } } }
相关文章推荐
- 关于ListView中多个EditText之间相互联动导致无限循环问题的解决方法
- ubuntu 登录界面无限循环问题解决方法
- 解决demo的问题,关于 Play()方法 和 计时器中的死循环问题
- 不使用循环结构解决循环问题的方法
- 计数器和累加器的使用循环结构程序设计中的常见问题有2个以及解决方法
- JS之经典for循环闭包问题解决方法
- 所有学生下机循环MHSFlexGrade,不遍历OnLine表的方法——机房遇到问题(三)
- “SET 命令设置的环境变量在 FOR 循环中始终为空”问题的原因与解决方法
- 以指派问题为例写的一个用循环实现dfs的方法.(gcc)
- Java方法中有循环的时候返回值问题
- Android中ViewPager无限循环实现方法
- Magento 2,无法登录后台,循环登录问题解决方法
- 解决VC6和VC2008的for循环变量作用域不同问题的一个方法
- python类中显示重写__del__方法,引起循环引用的对象无法释放,造成垃圾泄露问题
- ruby数组自带方法与自定义方法的性能测试集+1个循环问题
- Subsets II [leetcode] 从获取子集的递归和循环方法说起,解决重复子集的问题
- U盘常见“无法停止”问题解决方法
- 玩死浏览器的n种方法 (1)----动态dom集合导致的无限循环
- 人为的无限循环即停止方法
- 解决java.math.BigDecimal divide方法运算结果为无限小数问题