Eingabe von Text in der Konsole und das Einlesen von Text-Dateien

Um ein Programm interaktiv zu gestalten, besteht eine Möglichkeit darin, den Benutzer Texteingaben machen zu lassen.

Dieses Kapitel stellt vor, wie Text über die Tastatur in der Konsole eingegeben werden kann und wie man Text aus einer Datei ausliest.

Wir werden hier erstmals Funktionen aus der Standard-Java-Bibliothek verwenden, wobei wir uns um nicht besonders viel kümmern müssen, da unsere IDE uns dabei hilft, die richtigen Funktionen zu importieren.

== Eingabe von Text in der Konsole und das Einlesen von Text-Dateien Um ein Programm interaktiv zu gestalten, besteht eine Möglichkeit darin, den Benutzer Texteingaben machen zu lassen. Dieses Kapitel stellt vor, wie Text über die Tastatur in der Konsole eingegeben werden kann und wie man Text aus einer Datei ausliest. Wir werden hier erstmals Funktionen aus der Standard-Java-Bibliothek verwenden, wobei wir uns um nicht besonders viel kümmern müssen, da unsere IDE uns dabei hilft, die richtigen Funktionen zu importieren.

Eingabe von Text über die Tastatur

=== Eingabe von Text über die Tastatur
try(Scanner sc=new Scanner(System.in)){ (1)
    System.out.println("Bitte gib deinen Namen und dein Alter ein: ");
    String name=sc.next(); (2)
    int alter=sc.nextInt(); (3)
    System.out.println("Dein Name ist "+name+" und dein Alter ist "+alter);
}
Java
[source,java,indent=0] ---- try(Scanner sc=new Scanner(System.in)){ //<1> System.out.println("Bitte gib deinen Namen und dein Alter ein: "); String name=sc.next(); //<2> int alter=sc.nextInt(); //<3> System.out.println("Dein Name ist "+name+" und dein Alter ist "+alter); } ----
1 Ein Objekt vom Typ Scanner kann aus der Konsole (System.in) Eingaben auslesen.
2 Mit next() wird der nächste String ausgelesen …​
3 …​ und mit nextInt() der nächste Integerwert. Die einzelnen Werte müssen dazu entweder durch Leerzeichen oder die Return-Taste getrennt eingegeben werden.
<1> Ein Objekt vom Typ `Scanner` kann aus der Konsole (`System.in`) Eingaben auslesen. <2> Mit `next()` wird der nächste String ausgelesen ... <3> ... und mit `nextInt()` der nächste Integerwert. Die einzelnen Werte müssen dazu entweder durch Leerzeichen oder die Return-Taste getrennt eingegeben werden.

Der try-Block wird hier nur verwendet, da er am Ende automatisch den Scanner wieder schließt. Im nächsten Beispiel werden wir noch einen anderen Fall mit try kennenlernen.

Der `try`-Block wird hier nur verwendet, da er am Ende automatisch den Scanner wieder schließt. Im nächsten Beispiel werden wir noch einen anderen Fall mit `try` kennenlernen.

Einlesen von Textdateien

=== Einlesen von Textdateien
try(BufferedReader br=new BufferedReader(new FileReader("Pfad meiner Datei"))){ (1)
    String zeile="";
    while ((zeile=br.readLine())!=null){ (2)
        System.out.println(zeile);
    }
} catch (Exception e){ (3)
    System.out.println("Ein Fehler ist beim Öffnen der Datei aufgetreten.");
}
Java
[source,java,indent=0] ---- try(BufferedReader br=new BufferedReader(new FileReader("Pfad meiner Datei"))){ //<1> String zeile=""; while ((zeile=br.readLine())!=null){ //<2> System.out.println(zeile); } } catch (Exception e){ //<3> System.out.println("Ein Fehler ist beim Öffnen der Datei aufgetreten."); } ----
1 Ein BufferedReader kann zeilenweise Werte aus einer Datenquelle auslesen.
2 Hier wird mit nextLine() die nächste ganze Zeile geholt. Das wiederholt sich so lange, bis es keine nächste Zeile mehr gibt.
3 Der try-Block hat hier unter anderem die Funktion, einen Programmteil einzuhüllen, von dem man zur Zeit der Programmierung noch nicht sicher sein kann, ob dieser Teil problemlos funkionieren wird: so könnte eine Datei nicht existieren oder das Laufwerk defekt sein. In einem solchen Fall kann das Programm nicht normal weiterlaufen sondern gelangt in einen Ausnahmezustand (Ausnahme auf englisch: exception). Mit dem catch-Block können solche Ausnahmen abgefangen und auf die Situation richtig reagiert werden.
<1> Ein `BufferedReader` kann zeilenweise Werte aus einer Datenquelle auslesen. <2> Hier wird mit `nextLine()` die nächste ganze Zeile geholt. Das wiederholt sich so lange, bis es keine nächste Zeile mehr gibt. <3> Der `try`-Block hat hier unter anderem die Funktion, einen Programmteil einzuhüllen, von dem man zur Zeit der Programmierung noch nicht sicher sein kann, ob dieser Teil problemlos funkionieren wird: so könnte eine Datei nicht existieren oder das Laufwerk defekt sein. In einem solchen Fall kann das Programm nicht normal weiterlaufen sondern gelangt in einen _Ausnahmezustand_ (Ausnahme auf englisch: _exception_). Mit dem `catch`-Block können solche Ausnahmen abgefangen und auf die Situation richtig reagiert werden.