scanner关闭后,新创建的scanner对象输入时会报错
# 具体遇到的问题
new Scanner(System.in) ,如果scanner.close()后再重新创建对象的时候,如果调用next()方法就会抛出异常
java.util.NoSuchElementException: No line found
# 尝试过的解决思路和结果
在类中创建一个属性就可以了,不过当前课程没讲这样的内容,我就没这样做
最后作业代码中没有加入close(),就是没关闭就可以了
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
public double inputHandle() {
scan = new Scanner(System.in);
double handleIndex = -1;
try {
handleIndex = scan.nextDouble();
} catch (InputMismatchException e) {
}
return handleIndex;
}
以上是我作业中的代码,这样子每次输入创建一个新的scanner对象,如果不执行close(),会怎么样?
22
收起
正在回答
1回答
同学你好,sc.close()这个语句可以关闭sc这个对象,也会同时关闭System.in这个控制台输入流,这个输入流关闭了,其他类的Scanner就没办法调用System.in(出现异常)。所以如果碰到System.in这样的Scanner对象,一般不会去手动关闭。Sc的引用就结束了,很快会被内存的垃圾回收机制回收,也会达到同样的效果,但是不会关闭System.in这个控制台的输入流。其他Scanner还是可以调用System.in。
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星