在多个类中都调用了Scanner时,虚拟机抛出了java.util.NoSuchElementEcxeption异常。我反复查看我的代码,并没发现逻辑上的错误。
在对单个类进行测试时,运行正常;但当我在中调用多个类时,抛出java.util.NoSuchElementEcxeption。
例如以下状况:
import java.util.Scanner;
public class Demo1 {
public Demo1() {
System.out.println("请输入一个整数:");
Scanner sc1 = new Scanner(System.in);
System.out.println("第一个数为:" + sc1.nextInt());
sc1.close();
}
}
import java.util.Scanner;
public class Demo2 {
public Demo2() {
System.out.println("请输入第二个整数:");
Scanner sc2 = new Scanner(System.in);
System.out.println("输入的第二个数为:" + sc2.nextInt());
sc2.close();
}
public static void main(String[] agrs) {
new Demo1();
new Demo2();
}
在Demo2中,sc.nextInt( );出现异常。
其具体原因是在Demo1中将Scanner的sc1对象关闭了,即sc1.close;这是造成这个异常的原因。
在单个类中,前面Scanner对象的关闭,不影响后面的Scanner对象的调用。
只用在调用多个类时,先执行类中的Scanner对象的关闭,会导致后执行类中的Scanner对象异常。
解决这个异常的方法就是不要关闭类中的Scanner对象,这样在对多个含有Scanner对象的类进行调用时,就不会抛出java.util.NoSunchElementException。