Ich versuche, eine Utility-Klasse erstellen nehmen Eingaben von der Standard-Console mit java.util.ScannerScanner: Exception in thread "main" java.util.NoSuchElementException
package dbasics;
import java.util.*;
public class Utils {
public static int getNumericInput() {
System.out.println("Enter a integer ");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.close();
return n;
}
public static int[] getNumericArrayInput(int n) {
//System.out.println("Enter "+n+" integers seperated by a whitespace ");
int[] numbers = new int[n];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < n; i++) {
numbers[i] =scanner.nextInt();
}
scanner.close();
return numbers;
}
}
Während Aufruf der statische Methoden in einer anderen Klasse die Methode getNumericInput()
funktioniert gut, aber die folgende Methode getNumericArrayInput(int n)
führt zu einer Ausnahme.
package dbasics;
public class Demo {
public static void main(String[] args) {
int n = Utils.getNumericInput();
System.out.println("Number "+n);
int arr[] = Utils.getNumericArrayInput(n);
for(int i : arr) {
System.out.println(i);
}
}
}
Rennen ergibt sich folgende Ausnahme
Enter a integer
5
Number 5
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at dbasics.Utils.getNumericArrayInput(Utils.java:21)
at dbasics.Demo.main(Demo.java:9)
Die intresting, was ich bemerkt habe ist, wenn ich Eingang das Array den ersten Eingabeprozedur kommentieren Sie funktioniert gut
lesen Sie sollten immer versuchen Sie mit <> mit Ressourcen für die Klassen wie Scanner, die sind schließbar. Es ist möglich, dass Ihr erster Aufruf den Eingabestream schließt, wenn er geschlossen wird. – Dragonthoughts