我想实现用户要是输入的数据大于我数组的长度或者小于0能够抛出错误。该怎么改?

我想实现用户要是输入的数据大于我数组的长度或者小于0能够抛出错误。该怎么改?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
case 4:
                System.out.println("请输出要修改的成绩位置(从0开始):");
                int index =0;
                try {
                    index = sc1.nextInt();
                    if(index>(f.length-1)) {
                        System.out.println("输入的数据大于数组的长度,请重新输入");
                        sc1.next();
                         
                    }else if(index < 0){
                        System.out.println("不能输入比0小的数据,请重新输入");
                        sc1.next();
                         
                    }else {
                        break;
                    }
                }catch(InputMismatchException e) {
                    System.out.println("输入的数据格式有误,不能有非数字!");
                    sc1.next();
                     
                }
                float newScore = 0;
                System.out.println("请输出要新的成绩:");
                 
                try {
                      newScore= sc1.nextFloat();
                }catch(InputMismatchException e) {
                    System.out.println("输入的数量格式有误,不能有非数字!");
                    sc1.next();
                }
                stu.update(f, index, newScore);

我这样写的话,第二次输入还是错误就不会管了。我该怎么改呢,求指导!谢谢!

正在回答

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

2回答

        同学你好,这里代码的实现是多种多样的,如果想实现当输入错误时,重新输入内容,可以将接收数据的这段代码放在一个while循环中,当输入数据异常,使用continue跳出本次循环,重新接收数据!例如:

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

        如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

好帮手慕小班 2019-07-27 15:53:50

        同学你好,这里可以参考如下代码来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
case 4:
    // 修改数据
    System.out.println("请输出要修改的成绩位置(从0开始):");
    int index = 0;              
    try {
        index = sc1.nextInt();
        if (index > (f.length - 1)||index < 0) {
            System.out.println("输入的数据比数组的长度不符合,请重新输入");
            break
            }                  
    catch (InputMismatchException e) {
        System.out.println("输入的数据格式有误,不能有非数字!请重新输入");
            sc1.next();
            continue;
    }              
    float newScore = 0;
                 
    System.out.println("请输出要新的成绩:");
    try {
        newScore = sc1.nextFloat();
    catch (InputMismatchException e) {
        System.out.println("输入的数量格式有误,不能有非数字!");
        sc1.next();
    }
    stu.update(f, index, newScore);

运行效果如下:

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

直接给出提示信息,重新输入!

        如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 Adam静之 #1
    也就是不符合的时候,只能跳出case,然后再让用户自己选择进这个case来重新输入吗?
    2019-07-27 16:03:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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