想问下Scanner.next()方法

想问下Scanner.next()方法

Main {
    (String[] args) {
        StudentScoreManage ssm=StudentScoreManage();
        Scanner input=Scanner(System.);
        option=; {
            ssm.displayMenu();{
                option=input.nextInt(); }(InputMismatchException e){
                System..println();
                input.next();
            }
        }(option==);

    }
}

我的代码一开始是没有input.next()的,所以当用户输入的为非数字时程序一直在循环显示菜单,没办法重新输入。看了老师这个视频里加了个sc.next(),说是接收用户的输入。想问下当执行到sc.next()方法后,系统不会等我的下次输入吗?它现在是直接把我之前输错的内容给存进去了吗?

正在回答

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

1回答

同学你好,当Scanner接收到数据时,会对数据进行验证,如果数据类型接收不匹配,会直接抛出异常而不处理该数据,并且该数据是不会被内存所丢弃,会一直保存到内存中,直到程序运行结束,才会被内存丢弃,或者该数据被其他方法所接收从而消耗掉,而sc.next方法会接收到String类型的数据,即任何数据都会被接收,并且不会报错。

综上所述,scanner.next();只是用来消耗数据的。

祝学习愉快~

  • 安小圈 提问者 #1

    你好,谢谢答复。

    如果Scanner.next()只是消耗数据的。那么假如我需要输入一个int类型的数据,如果输入带小数的数就会报错,那我是否也可以用Scanner.nextFloat()来消耗这里的小数数据呢?

    2024-03-20 09:36:55
  • 好帮手慕小蓝 回复 提问者 安小圈 #2

    同学你好,是可以的。课程中选择next方法是因为可以接收所有类型,具有通用性。如果用户只可能错误的输入小数,使用nextFloat也是可以的。

    祝学习愉快~

    2024-03-20 10:06:13
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
Java工程师 2024版
  • 参与学习       2053    人
  • 提交作业       1490    份
  • 解答问题       1316    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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