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

来源:1-3 Java中通过案例学习 try...catch...finally

Edward_Xie

2016-08-10 17:18

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”,无限循环,直接跳过 了输入步骤,这是为什么呢?

写回答 关注

3回答

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

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

    Edward...

    哈哈,非常感谢!

    2016-08-11 13:17:04

    共 1 条回复 >

  • 连绵的阴雨天
    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;

    }


    Edward... 回复染红_街道

    非常感谢!全弄懂了!不过回复楼要怎么采纳。。

    2016-08-11 10:39:34

    共 3 条回复 >

  • 小黄弟弟斗鱼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 类();   //在本类中创建一个对象

    对象名.类();

    }


    }


    染红_街道 回复Edward...

    catch语句块跳回循环之前加一句 next(); 把储存在缓冲区的非数字数据给清除掉,然后就可以了 你试试

    2016-08-11 10:14:29

    共 3 条回复 >

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题