a5726s6 2015-08-27 02:34 采纳率: 33.3%
浏览 2927

Java中抛出异常后,catch中的解决办法不是很懂

public static void main(String[] args) {
    int xuan;
    Scanner in=new Scanner(System.in);
    while (true) {
        System.out.println("请选择A冒险,B查看人物属性,C恢复体力");
        System.out.println("=====================================");
        try{
        xuan = in.nextInt();
        if (xuan==1) {
            System.out.println("1");
        } else if (xuan==2) {
            System.out.println("2");
        } else if (xuan==3) {
            System.out.println("你的血和魔法值都已恢复到满值状态!");
            System.out.println("=====================================");
        } else {
            System.out.println("你的选择有误!");
        }
        }catch(Exception e){
        //in=new Scanner(System.in);
        System.out.println("11");
        }
    }

}

catch中的new了一个Scanner对象,不知道为什么new了就可以达到我想要的结果,就是在循环中如果输入了一个错误的类型,提示错误,下一次循环可以再一次输入,然后再来try catch输入的类型符合不符合想要的类型.解决的办法有了就是在catch中new一个新的Scanner对象,为什么要新new一个就可以了呢?不new就会死循环.

  • 写回答

5条回答 默认 最新

  • dudududududu 2015-08-27 02:59
    关注

    很简单么,在try中会抛异常的语句就是xuan = in.nextInt();
    就是拿到的数据不是int,不能赋给xuan,
    所以要在catch中对in重新初始化一下,就像在程序一开始的地方。
    不然的话,xuan = in.nextInt();会一直抛异常。

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大