JAVA清空输入缓冲之键盘输入类型与接收类型不一致解决办法

一、键盘输入类型与接收类型不一致

当在键盘上输入的类型与定义的接收输入的类型不一致时,可能会导致系统报错或者崩溃,如图:
在这里插入图片描述

这时可以采用try catch包裹可能会出错的代码段

在这里插入图片描述
然后通常我们需要在catch里重新进行输入操作,这时我们会发现,我们总是不是不能在键盘上进行输入操作,其根本原因在于:
之前输入错误类型时系统进行了try catch操作,导致输入缓冲区里内容还未被读取出来,所以当我们再次使用Scanner对象输入数据时,jvm会优先将输入缓冲区内剩余的内容读取出来,赋值给你定义的变量,这就相当于完成了输入操作,所以我们无法再在键盘上输入任何数据

二、 那么如何清空输入区缓冲,完成我们的正常输入功能呢?

第一种方法:
对之前定义的Scanner对象的引用变量重新指向一个新的Scanner对象,这样相当于有了不同输入缓冲区,并且缓冲区内容为空,可以进行键盘输入操作:如图
在这里插入图片描述
在这里插入图片描述
这种方法的缺点就是可能会导致开启太多的Scanner对象,对内存有一定影响,代码结尾需要手动关闭Scanner对象,如:in.close();
第二种方法更简单易理解:
在前面定义个专门接收缓冲的字符串,然后在需要的地方使用这个字符串将输入缓冲里的内容读取出来(这相当于清空输入缓冲),方可继续正常使用之前的输入对象,如下所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以继续进行输入操作了,是不是很简单啊,觉得有所帮助的可以给我点个赞哦

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值