使用以下扫描仪时:
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错误?
答案 0 :(得分:5)
问题是
当扫描仪关闭时,如果源实现了Closeable接口,它将关闭其输入源。
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html
因此scan.close()关闭System.in。
要解决此问题,您可以
扫描仪扫描静态或每次扫描方法中的扫描仪对象并最后关闭它。
答案 1 :(得分:-1)
我认为因为您没有删除扫描仪。尝试在再次调用之前删除s的实例。如果内存不是约束,你可以随时创建一个新的扫描程序对象,但是在完成后正确地解除分配内存的编码习惯会更好。