我正在努力将整数读入Java列表中,并且我发现了一个异常,当放入Scanner&循环中的nextInt()。
此代码中的Scanner类抛出异常:
do{
System.out.println("?");
Scanner in = new Scanner(System.in);
input = in.nextInt();
in.close();
if(input != SENTINEL)
numberList.add(input);
}while(input != SENTINEL);
尽管移动扫描仪初始化并在循环外部关闭也可以正常工作:
Scanner in = new Scanner(System.in);
//receive input integers from user
do{
System.out.println("?");
input = in.nextInt();
if(input != SENTINEL)
numberList.add(input);
}while(input != SENTINEL);
in.close();
为什么在循环中初始化Scanner类时会发生异常?谢谢!
例外是:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at main.Run.main(Run.java:25)
答案 0 :(得分:0)
第一个版本崩溃的原因是调用Scanner.close
- 也关闭了基础流:System.in
。
可以通过将Pattern p = Pattern.compile("foo *")
包含在System.in
方法中不执行任何操作的类(close()
的代码取自here)来证明:< / p>
UnClosableDecorator