NoSuchElement使用扫描仪两次

时间:2014-04-28 22:15:15

标签: java java.util.scanner nosuchelementexception

我正在处理一个读取用户输入的代码,所以我已经创建了一个程序来执行该操作,读取并返回字符串。当从另一个过程调用它两次时,返回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)

第一次调用它时工作正常然后它崩溃了。它会是什么?

2 个答案:

答案 0 :(得分:0)

由于只使用了一个InputStream,因此第二次调用该方法时,不再可能从已关闭的输入源读取

要么不要关闭Scanner(或创建一个Scanner的单个类实例,要在应用程序结束时关闭)

答案 1 :(得分:0)

这是因为您的扫描仪已链接到System.in,当您关闭扫描仪时,它也会自动关闭System.in。你想要做的就是关闭你的扫描仪而不关闭System.in。

这会有所帮助:Close Scanner without closing System.in