问答详情
源自:1-3 Java中通过案例学习 try...catch...finally

有一个自己写代码时的问题

while (true) {

try {

player1.ID = console.nextInt();

} catch (Exception e) {

System.out.println("请输入数字ID!");

continue;

// TODO: handle exception

}

break;

}

这里定义的player1.ID是int型的,希望达到的效果是输入非数字型时提示用户“请输入数字ID”,通过continue进行下一轮循环以便重新输入,可是这个代码当我输入非数字时,程序不断的循环打出“请输入数字ID”,无限循环,直接跳过 了输入步骤,这是为什么呢?

提问者:Edward_Xie 2016-08-10 17:18

个回答

  • 染红_街道
    2016-08-11 11:03:21
    已采纳

    0.0,,这就不是回复楼了吧   233333

  • 连绵的阴雨天
    2016-08-10 18:25:28

    用Scanner接收键盘输入的值,如果发生异常会一直返回这个异常值,这里要用String接收然后转成int.

    try {

    String str = console.next();

    int id = Integer.parseInt(str);

    } catch (Exception e) {

    System.out.println("请输入数字ID!");

    continue;

    }


  • 小黄弟弟斗鱼710373直播lol
    2016-08-10 17:56:34

    因为try是执行一个方法,catch只是捕获异常,不要用coutinue,要实现你的功能,你可以在catch块里加一个if判断,然后直接抛出一个异常,然后用finally来处理。代码修改如下:

    public  void 类(){

    try {

    int player1.ID = console.nextInt();

    if(//你自己实现判断,输入的不是数字){

    Exception e=new Exception();

    throw e;

    }

    } catch (Exception e) {

    System.out.println("请输入数字ID!");


    }finally{

    类  对象名 =new 类();   //在本类中创建一个对象

    对象名.类();

    }


    }