细雨下花田 2017-03-10 04:12 采纳率: 0%
浏览 4830
已结题

InputMismatchException可以由自己处理吗?

我希望系统在捕获InputMismatchException异常时可以交给我处理,比如打印“输入有误,请重新输入!”,然后我可以再次输入。比如下面这个switch,我想用以上方法检测每个nextDouble();
switch(k)
{
case 1:System.out.println("请输入三边长度");

             i.setValue(x.nextDouble(),x.nextDouble(),x.nextDouble());i.getPerimeter();i.getArea();
             count1++;
             break;
             case 2:System.out.println("请输入长和宽");

             ii.setValue(x.nextDouble(),x.nextDouble());ii.getPerimeter();ii.getArea();
             count2++;
             break;
             case 3:System.out.println("请输入半径");

             iii.setValue(x.nextDouble());iii.getPerimeter();iii.getArea();
             count3++;
             break;
             default:System.out.println("输入有误!");
        }
    }

我知道可以用下面的方法,但是好像对每个输入都要重复使用
for(;;){
try{Scanner x=new Scanner(System.in);

     if(!x.hasNextInt())throw new InputMismatchException();
   }catch(InputMismatchException e){
        System.out.println("输入有误");
        continue;
    }
    }
  • 写回答

3条回答

  • NOX3335581 2017-03-10 09:06
    关注
    try
    {
    这里括住整个switch就好
    }
    catch(InputMismatchException e)
    {
    System.out.println("输入有误");
    continue;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 CSS实现渐隐虚线框
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容