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 druch 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.