黑马程序员技术交流社区

标题: Scanner的一个小问题 [打印本页]

作者: 不可言    时间: 2014-6-19 20:55
标题: Scanner的一个小问题
本帖最后由 不可言 于 2014-6-20 12:46 编辑
  1. public static void main(String[] args) throws IOException
  2.         {
  3.                 Scanner sc = new Scanner(System.in);
  4.                 while(true){
  5.                         try{
  6.                                 int num = sc.nextInt();   //抛出异常后,就会循环执行catch里面的代码,
  7.                                 break;

  8.                         }catch(InputMismatchException e){
  9.                                  //当蒱获异常
  10.                                 System.out.println("Error\t"+e.getMessage());
  11.                         }
  12.                 }
  13.         }
复制代码

1.PNG (55.59 KB, 下载次数: 9)

1.PNG

作者: 不可言    时间: 2014-6-19 20:59
为什么会出现这样的情况,如何解决?(46)
作者: 人心如水    时间: 2014-6-19 21:28
你这是死循环啊,会一直循环,直到内存空间没地方了才会停止,而且你这里没有异常啊,catch抓不到异常为null
作者: lucky_man    时间: 2014-6-19 21:32
用Scanner也有异常吗?没有见过,来学习下
作者: wangkerui    时间: 2014-6-19 21:34
表示没看懂!
作者: ≥﹏≤我还太年    时间: 2014-6-19 21:36
while(true)一直循环catch内容,你给catch代码块最后也加个break
作者: wuguiye    时间: 2014-6-19 21:42
你应该把while(ture)放在try 里面 ,你那样的话一接一个非整型的数据就会发生异常,执行不到break语句,所以一直循环
作者: 轩辕冰晨    时间: 2014-6-19 22:02
楼上的正解,不过你已经抛了异常怎么还去捕获啊
作者: w440149517    时间: 2014-6-19 22:03
对,这是死循环,你可以把true条件该一改
作者: 华子    时间: 2014-6-19 23:02
这有什么不懂啊 ,catch捕获异常然后,在while(true)里面循环啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2