在使用扫描仪时,如下所示:

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异常异常:

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

我多次致电(Scanner),第二次致电时发生运行时错误。 这是由于关闭扫描仪,然后可能再次使用。 我的问题是,每次使用Scanner时都会创建一个新实例,为什么会出现RunTime错误?

===============>>#1 票数:5

问题是

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

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

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

要解决它,你可以

扫描程序会在方法中静态扫描或每次通过扫描程序对象,最后关闭它。

===============>>#2 票数:-1

我认为是因为您没有删除扫描仪。 尝试删除s的实例,然后再次调用它。 而且,如果内存不是一个约束,则始终可以创建一个新的扫描程序对象,但这是更好的编码做法,可以在完成后适当地重新分配内存。

  ask by Hahn translate from so

未解决问题?本站智能推荐: