scanner关闭后,新创建的scanner对象输入时会报错

scanner关闭后,新创建的scanner对象输入时会报错

# 具体遇到的问题
new Scanner(System.in) ,如果scanner.close()后再重新创建对象的时候,如果调用next()方法就会抛出异常

java.util.NoSuchElementException: No line found

# 尝试过的解决思路和结果
http://img1.sycdn.imooc.com//climg/5fd5cac60937c86706890409.jpg

在类中创建一个属性就可以了,不过当前课程没讲这样的内容,我就没这样做

最后作业代码中没有加入close(),就是没关闭就可以了

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

​public double inputHandle() {
scan = new Scanner(System.in);
double handleIndex = -1;
try {
handleIndex = scan.nextDouble();
} catch (InputMismatchException e) {
}
return handleIndex;
}

以上是我作业中的代码,这样子每次输入创建一个新的scanner对象,如果不执行close(),会怎么样?

正在回答

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

1回答

同学你好,sc.close()这个语句可以关闭sc这个对象,也会同时关闭System.in这个控制台输入流,这个输入流关闭了,其他类的Scanner就没办法调用System.in(出现异常)。所以如果碰到System.in这样的Scanner对象,一般不会去手动关闭。Sc的引用就结束了,很快会被内存的垃圾回收机制回收,也会达到同样的效果,但是不会关闭System.in这个控制台的输入流。其他Scanner还是可以调用System.in。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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