Scanner
Einführung
Die Klasse java.util.Scanner
kann eine Zeichenkette aus unterschiedlichen Quellen einlesen. Vor der Nutzung muss die Bibliothek java.util
importiert werden. Zum Aufbau der Scanner-Objekte bietet die Klasse einige Konstruktoren an. Je Konstruktor können unterschiedliche Quellen für das Einlesen angegeben werden.
Möglich ist das Einlesen des Datenstroms aus der Kommandozeile (durch System.in
) oder aus einem File-Objekt. Die vollständige Dokumentation kann der API unter https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html entnommen werden. Ein vertiefender Fachartikel findet sich unter http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_04_008.htm#mj93a3cb6f9d58defedbc989a780cf6c99.
Einlesen über Kommandozeile
Mit Hilfe von System.in
können Daten aus der Eingabekonsole übernommen werden. System.in
ist wie System.out
sofort nutzbar und muss nicht importiert werden.
Die next()
-Methode liefert die nächste Eingabe in das Scanner-Objekt als String Objekt zurück. Die Klasse Scanner bietet diverse next()
-Methoden an, die die nächste Eingabe einlesen und in ein gewünschtes Format konvertieren, etwa in ein double
durch nextDouble()
.
Folgende Beispiel-Methode gibt einen Einblick in den Umgang mit der Scanner-Klasse:
public String einlesen() {
// Deklaration und Initialisierung eines Scanner Objektes
// Als Eingabeparameter wird durch System.in der Eingabestrom aus der Konsole übergeben.
Scanner scanner = new Scanner(System.in);
System.out.println("Bitte geben Sie etwas ein und bestätigen Sie mit Return!");
// Die Methode next() wird auf dem Scanner-Objekt scanner ausgeführt.
// next() liest den nächsten Datensatz aus dem Scanner-Objekt aus.
String x = scanner.next();
return x;
}
Einlesen Textfile
Dem Konstruktor des Scanner Objektes kann auch ein Textfile übergeben werden. Ist das Scanner-Objekt angelegt, lässt sich mit hasNextLine()
und nextLine()
einfach eine Datei zeilenweise auslesen:
Scanner scanner = new Scanner(new File("Test.txt"));
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
Wichtig ist, dass ein Exception Handling implementiert wird und die FileNotFoundException
abgefangen wird.