关于Scanner sc=new Scanner(System.in);的问题

关于Scanner sc=new Scanner(System.in);的问题

每次写Scanner函数的时候,eclipse总是给我警告,说要关闭要关闭,http://img1.sycdn.imooc.com//climg/5ecf8b71091bc95203700045.jpg

因为之前看老师写的也么关闭,所以一直没管,这次我sc.close()关闭了之后,然后运行的时候给我报错了http://img1.sycdn.imooc.com//climg/5ecf8c0b0929a92008030846.jpg

我先输入2进入学校管理,进入之后我输入0退出,就给我报错了,不晓得是啥子意思,百度说的不详细,前来找大佬指点一二。

正在回答

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

2回答

同学你好,sc.close()表示将Scanner对象关闭了,再次使用时就会报这个错误。

    当sc被close后,不能再使用,如果再次使用,需要重新定义一个Scanner对象。通常在一个类中,我们只定义一个Scanner对象,程序结束时关闭Scanner对象。

    同学可以尝试将Scanner对象定义在循环外,避免重复创建,sc.close()写在代码的最后,避免过早关闭Scanner。

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

  • 小术菜菜 提问者 #1
    如果我普通方法和主方法中都需要用到Scanner类,那么关闭是时候是在每个方法的最后都close一下吗? 还是说我只需要在主方法的最后close一下就行了,如果在主方法中close就行了,那么其他普通方法的Scanner类给我警告也不用管了是吗?
    2020-05-28 19:15:31
  • 好帮手慕小班 回复 提问者 小术菜菜 #2
    同学你好,直接在普通方法中使用close方法,可能会造成不能使用的异常,所以同学暂时可以忽略这个警告。 如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2020-05-29 09:59:25
苍星乱舞 2020-05-28 19:07:57

强迫症吗?

  1. 你关闭的时候不能太早,如果后面的代码还要用你就要在最后关闭

  2. 这里的最后也是要在 Scanner 对象实例化所在的方法(1)结束前关闭,在别的方法是关闭不了方法(1)里的对象的。

  • 提问者 小术菜菜 #1
    如果我普通方法和主方法中都需要用到Scanner类,那么关闭是时候是在每个方法的最后都close一下吗? 还是说我只需要在主方法的最后close一下就行了,如果在主方法中close就行了,那么其他普通方法的Scanner类给我警告也不用管了是吗?
    2020-05-28 19:15:37
  • 苍星乱舞 回复 提问者 小术菜菜 #2
    本来警告就不用管的,你的目的不是为了去掉警告吗? 所以都要关闭,这下你还有强迫症吗。。
    2020-05-28 19:28:48
  • 提问者 小术菜菜 回复 苍星乱舞 #3
    。警告不用管,好的,确实有点强迫症,看着警告想给抠掉。。。
    2020-05-28 19:32:41
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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