问答详情
源自:7-1 简易扑克牌游戏

请问下我下面的代码为什么会陷入死循环

 while(true){

         try{

        id1=input.nextInt();

        }catch(Exception e){

        System.out.println("请输入整数型数字");

        continue;

        }

         break;

         }


提问者:sadfiy 2017-03-01 19:43

个回答

  • 李东岳
    2017-03-18 21:11:36
    已采纳

    这几天没看java啦,说实话,我对java也只是一个爱好者

    给你看一个之前写的

    /**
    * 判断输入玩家编号异常值
    * @return
    * @throws Exception
    */
    public int scanInt() throws Exception
    {
       try {
           int in = console.nextInt();
           return in;
       } catch (Exception e) {
           console = new Scanner(System.in,"UTF-8");
           throw new Exception("输入异常,请输入整数类型的ID");
       }
    }


  • weibo_用户56557580_0
    2017-05-04 15:21:36

    楼上说的对,你只要改一行就好了

    id1=Integer.parseInt(input.nextLine());


  • 一只鱼鱼
    2017-04-18 18:59:27

    你定义了一个Scanner对象 input吧 如果你已经赋值给他并且非int变量

      循环再运行input.nextInt()方法就不再接收键盘输入    而是直接返回上一次有异常的值,然后继续异常   会无限循环catch块的代码的  

    简单说解决方案 可以try内部再新new一个Scanner对象

    或者使用楼上的throw 

  • 慕粉3912505
    2017-04-04 10:24:42

    http://www.imooc.com/qadetail/199049

  • sadfiy
    2017-03-02 13:50:48

    continue是用来继续循环啊,break是跳出循环,如果用return的话后面程序就都不用执行了。

  • 李东岳
    2017-03-01 20:02:45

    这个问题你断点调试一下就会发现,当输入不是整形,触发异常的时候,continue一直都在循环中,

    改成throw new Exception("输入异常,请输入整数类型数字");就好啦