Dialoge (1)

Im Dialog geht es besser

In einer der letzten Lektionen haben Sie gelernt, wie man ein Programm über Parameter mit Informationen versorgt. Parametereingabe ist auch für Konsolenprogramme eher die Ausnahme. Sinnvoller ist es, die Angaben, die zur Ausführung des Programms benötigt werden, nach dem Programmstart mit präzisen Aufforderungen abzufragen.

Das folgende Programm demonstriert, wie an einer beliebigen Stelle des Programms Eingaben von der Tastatur gelesen werden können. In Java nutzt man dazu die fertige Klasse Scanner. Diese steht dem Java-Programmierer aber nicht automatisch zur Verfügung, sondern muss am Anfang des Programmtextes explizit aus einer Klassenbibliothek namens  java.util  importiert werden.
Anstatt aber mit import java.util.Scanner; nur gezielt diese eine Klasse zu importieren,
binden wir mit import java.util.* gleich die ganze Bibliothek in unseren Programmtext ein.


import java.util.*;                                 // bindet die Utilities-Sammlung
                                                    // mit der Tastaturscanner-Klasse ein
class Dialog {
  public static void main(String[] args) {
    String name;                                    // reserviert Speicherplatz für einen String
    System.out.println("Morgendliche Begrüßung\n");
    Scanner Eingabe = new Scanner(System.in);       // erzeugt ein Objekt der Klasse Scanner
                                                    // und gibt ihm die Bezeichnung "Eingabe"
    System.out.print("Hallo, wer bist du? ");       // gibt eine Eingabeaufforderung aus
    name = Eingabe.next();                          // speichert die nächste Tastatureingabe
                                                    // an der mit name bezeichneten Stelle.
    System.out.print("Guten Morgen, ");
    System.out.println(name);                       // Gibt den gespeicherten String aus.
  }
}


Wo kann ich bitte einen String ablegen?

Damit der Computer angemessen mit Eingaben umgehen kann, muss er ungefähr wissen, ob der Benutzer ihm Zahlen oder Wörter mitteilen will. Gehen wir zunächst einfach davon aus: Von der Tastatur kommt ein String, eine Zeichenkette. Die kann Buchstaben, Ziffern oder andere Zeichen enthalten. Ein String wird vom Computer nicht weiter hinterfragt, sondern einfach abgespeichert. 

Noch ein Problem ist zu lösen: Die Eingabe kann nicht direkt von der Tastatur zum Bildschirm übertragen werden, sondern sie muss zwischengespeichert werden. Dazu dient eine Variable. In unserem Fall wird
- mit String name eine Variable angelegt (d.h. eine Schublade für einen String frei gemacht und mit dem Etikett name versehen),
- mit
name = Eingabe.next() in der Schublade name die Eingabe des Benutzers abgelegt,
- mit
System.out.println(name) eine Kopie der Zeichenkette aus der Schublade an die Methode println übergeben.

Kopieren Sie das Programm in den Java-Editor, Starten Sie es durch Klick auf den grünen Pfeil und geben Sie Ihren Namen ein.

Aufgaben:

  1. Was passiert, wenn Sie im abgebildeten Programm Ihren Vor- und Nachnamen eingeben?
    Ändern Sie die Eingabezeile auf Eingabe.nextLine(), um eine ganze Zeile (mit Leerzeichen) einzulesen.
  2. Kopieren Sie das Programm und fügen Sie es in ein Word-Dokument ein.
    Unterstreichen Sie all die Wörter, die vom Programmierer frei gewählt wurden, blau
    und die Wörter, die von der Java-Syntax vorgegeben sind, rot.
  3. Benennen Sie das Programm um in Dialog1 und speichern Sie es ab.
    Richten Sie mit String vorName, nachName; zwei getrennte Variablen für Vor- und Nachname ein.
    Fragen Sie dann mit zwei getrennten Fragen nacheinander nach Vor- und Nachnamen.
    Lesen Sie die erste Eingabe in Variable vorName, die zweite in nachName ein.
    a) Bauen Sie nur den Nachnamen in die Ausgabezeile ein.
    b) Bauen Sie den Vornamen, den Nachnamen und dazwischen ein Leerzeichen in die Ausgabezeile ein.