扫描仪使用后关闭

时间:2014-04-21 05:25:19

标签: java runtime java.util.scanner

使用以下扫描仪时:

Scanner s = new Scanner(System.in);
String response = s.next();

Boolean approved = (response.contains("Y") || response.contains("y")) ? true : false;

if (approved){
  Do Stuff      
}
s.close();

我没有得到这样的Element异常异常:

  

线程“main”中的异常java.util.NoSuchElementException at   java.util.Scanner.throwFor(未知来源)at   java.util.Scanner.next(未知来源)****

我多次调用s(扫描程序),第二次调用时发生运行时错误。 这是由于关闭扫描仪而不是再次使用它。 我的问题是, 我每次使用它时都在创建一个新的Scanner实例,所以为什么我得到runTime错误?

2 个答案:

答案 0 :(得分:5)

问题是

当扫描仪关闭时,如果源实现了Closeable接口,它将关闭其输入源。

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

  

因此scan.close()关闭System.in。

要解决此问题,您可以

  

扫描仪扫描静态或每次扫描方法中的扫描仪对象并最后关闭它。

答案 1 :(得分:-1)

我认为因为您没有删除扫描仪。尝试在再次调用之前删除s的实例。如果内存不是约束,你可以随时创建一个新的扫描程序对象,但是在完成后正确地解除分配内存的编码习惯会更好。