为什么一次输入会导致多次异常?

为什么一次输入会导致多次异常?

public float[] initScore() {
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入要存储的数学成绩的数量:");
    int length=sc.nextInt();
    float[] mathScore=new float[length];
    for(int i=0;i<mathScore.length;i++) {
        System.out.println("请输入第" + (i + 1) + "个数据:");
        try {
            mathScore[i] = sc.nextInt();
        } catch (java.util.InputMismatchException e) {
            System.out.println("不能输入非数字!");
        }
    }
    return mathScore;
        
}

发生一次异常之后进入第二次循环为什么就不能再次输入?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2019-05-30 16:39:11

同学你好,这里是因为没有将发生的异常数据接收,并将i的值减一(退出本次循环),所以不能进行后面的输入哦!修改建议如下:

http://img1.sycdn.imooc.com//climg/5cef95770001ec8a08120697.jpg

这样就会在输入错误的情况下,捕获异常,重新输入!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕仰802120 #1
    退出本次循环之后应该进入下一次循环呀,而第二次循环为什么不能进行输入了呢?
    2019-05-30 19:07:18
  • 好帮手慕小班 回复 提问者 慕仰802120 #2
    同学你好,当发生异常进入catch中处理异常,并没有跳出本次的循环,它就还在catch块中呐!需要接收异常的数据,跳出本次的循环,并重新进行这一次的输入,所以需要在catch中添加-->sc.next();来接收数据,并且将i的值减去1,重新进行本次输入哟--> i--; 这样就能重新输入了哦! 如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2019-05-31 09:46:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师