关于Scanner的异常:“Exception in thread “main” java.util.NoSuchElementException”
今天用写Java写考试系统时遇到了以前未遇到过的异常
情况如下:
在main方法和类的成员方法(下面简称方法一)里我都创建了一个Scanner类的对象,在方法一结尾调用了scan.close()关闭了读控制台,在main方法中调用玩scan后同样关闭了读控制台,结果编译器报错:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at com.exam.EXAM.main(EXAM.java:28)
原因分析:
Scanner类对象都共享同一个输入流,任意一个调用.close()时,所有的Scanner对象都关闭了。
解决方案:
在方法一末尾中删除了scan.close();语句,因为在main方法中还需要读控制台,随后在main方法调用结束后需要及时关闭扫描器。(system.in属于IO流,打开后,它一直在占用资源,所以使用完之后一定要关闭!)