扫描仪使用后关闭

使用以下扫描仪时:

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(); 

我没有得到这样的Elementexceptionexception:

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

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

问题是

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

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

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

要解决它你可以做

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

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