我正在处理一个读取用户输入的代码,所以我已经创建了一个程序来执行该操作,读取并返回字符串。当从另一个过程调用它两次时,返回NoSuchElementException错误,我无法弄清楚原因。
输入阅读器proc:
public static String read() {
72 Scanner leer = new Scanner(System.in);
73 String entry = leer.nextLine();
74 leer.close();
75 return entry;
}
如何使用它:
...
System.out.println("input value ");
String padre = Entrada.read();
System.out.println("input values ");
27 String reemplazado = Entrada.read();
...
我得到了
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at modulocarga.Entrada.leerEntradaUsuario(Entrada.java:73)
at modulocarga.TablaSimbolica.addTaxonomica(TablaSimbolica.java:27)
at modulocarga.Principal.main(Principal.java:8)
第一次调用它时工作正常然后它崩溃了。它会是什么?
答案 0 :(得分:0)
由于只使用了一个InputStream
,因此第二次调用该方法时,不再可能从已关闭的输入源读取
要么不要关闭Scanner
(或创建一个Scanner
的单个类实例,要在应用程序结束时关闭)
答案 1 :(得分:0)
这是因为您的扫描仪已链接到System.in,当您关闭扫描仪时,它也会自动关闭System.in。你想要做的就是关闭你的扫描仪而不关闭System.in。