为什么Scanner in语句只能关闭一次,且对于其他任何Scanner输入流也关闭?
代码如图
- import java.util.Scanner;
- public class ScannerTest {
- public static void main(String[] args) {
- Scanner inputA = new Scanner(System.in);
- Scanner inputB = new Scanner(System.in);
- int numberA = input1.nextInt();
- int numberB = input1.nextInt();
- inputA.close();
- System.out.println(numberA);
- System.out.println(numberB);
- }
- }
运行后java报错“java.util.NoSuchElementException.”
查阅API后可知
System.in“标准”输入流。此输入流已打开并准备提供输入数据。通常,此输入流对应键盘输入、由主机环境或用户指定的另一个输入源。
当inputA调用close()方法后,System.in这个流将会关闭,而这种关闭将是永久性的,导致之后将不能接受任何数据,从而引发java.util.NoSuchElementException的错误,而且将“Scanner inputB = new Scanner(System.in);”这行代码移动到“inputA.close();”后面依旧是同样的错误,则说明当流关闭一次后就再也无法重新打开了。
--youhow
如有错误敬请批评指正!谢谢!