2

私はユーザー入力を読み取るコードに取り組んでいるので、それを行い、文字列を読み取って返す手順を作成しました。別のプロシージャから 2 回呼び出すと、理由がわからない NoSuchElementException エラーが返されます。

入力リーダー プロシージャ:

    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)

初めて呼び出すと正常に動作し、その後クラッシュします。どうなり得るか?

4

2 に答える 2

0

使用されるのは 1 つだけであるInputStreamため、メソッドが 2 回目に呼び出されたときに、閉じられた入力ソースから読み取ることができなくなりました

を閉じないようにしてください(または、アプリケーションの終了時に閉じるScanner単一のクラス インスタンスを作成します)。Scanner

于 2014-04-28T22:18:49.513 に答える
0

これは、スキャナーが System.in にリンクされており、スキャナーを閉じると System.in も自動的に閉じられるためです。やりたいことは、System.in を閉じずにスキャナーを閉じることです。

System.in を閉じずに Scanner を閉じます

于 2014-04-28T23:25:05.993 に答える