11.7 Einfache Benutzereingaben
Ein Aufruf von System.out.println() gibt Zeichenketten auf der Konsole aus. Für den umgekehrten Weg der Benutzereingabe sind folgende Wege denkbar:
- Statt System.out für die Ausgabe lässt sich System.in als sogenannter Eingabestrom nutzen. Der allerdings liest nur Bytes und muss für String-Eingaben etwas komfortabler zugänglich gemacht werden. Dazu dient etwa Scanner, den Kapitel 4, »Der Umgang mit Zeichenketten«, schon für die Eingabe vorgestellt hat.
- Die Klasse Console erlaubt Ausgaben und Eingaben. Die Klasse ist nicht so nützlich, wie es auf den ersten Blick scheint, und eigentlich nur dann wirklich praktisch, wenn passwortgeschützte Eingaben nötig sind.
- Statt der Konsole kann der Benutzer natürlich auch einen grafischen Dialog präsentiert bekommen. Java bietet eine einfache statische Methode für Standardeingaben über einen Dialog an.
11.7.1 Grafischer Eingabedialog über JOptionPane

Der Weg über die Befehlszeile ist dabei steinig, da Java eine Eingabe nicht so einfach wie eine Ausgabe vorsieht. Wer dennoch auf Benutzereingaben reagieren möchte, der kann dies über einen grafischen Eingabedialog JOptionPane realisieren:
Listing 11.10: com/tutego/insel/input/InputWithDialog.java
class InputWithDialog
{
public static void main( String[] args )
{
String s = javax.swing.JOptionPane.showInputDialog( "Wo kommst du denn wech?" );
System.out.println( "Aha, du kommst aus " + s );
System.exit( 0 ); // Exit program
}
}
Soll die Zeichenkette in eine Zahl konvertiert werden, dann können wir die statische Methode Integer.parseInt() nutzen.
Beispiel |
Zeige einen Eingabedialog an, der zur Zahleneingabe auffordert. Quadriere die eingelesene Zahl, und gib sie auf dem Bildschirm aus: String s = javax.swing.JOptionPane.showInputDialog( "Bitte Zahl eingeben" ); |
Sind Falscheingaben zu erwarten, dann sollte parseInt() in einen try-Block gesetzt werden. Bei einer unmöglichen Umwandlung, etwa wenn die Eingabe aus Buchstaben besteht, löst die Methode parseInt() eine NumberFormatException aus, die – nicht abgefangen – zum Ende des Programms führt.[180](Oder zumindest zum Ende des Threads.)
Beispiel |
Es soll ein einzelnes Zeichen eingelesen werden: String s = javax.swing.JOptionPane.showInputDialog( "Bitte Zeichen eingeben" ); |
Beispiel |
Ein Wahrheitswert soll eingelesen werden. Dieser Wahrheitswert soll vom Benutzer als Zeichenkette true oder false beziehungsweise als 1 oder 0 eingegeben werden: String s = javax.swing.JOptionPane.showInputDialog( |
if (s.equals("0") || s.equals("false") ) |
class javax.swing.JOptionPane |
- static String showInputDialog( Object message )
Zeigt einen Dialog mit Texteingabezeile. Die Rückgabe ist der eingegebene String oder null, wenn der Dialog abgebrochen wurde. Der Parameter message ist in der Regel ein String.
11.7.2 Geschützte Passwort-Eingaben mit der Klasse Console *
Die Klasse java.io.Console erlaubt Konsolenausgaben und -eingaben. Ausgangspunkt ist System.console(), was ein aktuelles Exemplar liefert – oder null bei einem System ohne Konsolenmöglichkeit. Das Console-Objekt ermöglicht übliche Ausgaben und Eingaben und insbesondere mit readPassword() eine Möglichkeit zur Eingabe ohne Echo der eingegebenen Zeichen.
Ein Passwort einzulesen und es auf der Konsole auszugeben, sieht so aus:
Listing 11.11: com/tutego/insel/io/PasswordFromConsole.java, main()
if ( System.console() != null )
{
String passwd = new String( System.console().readPassword() );
System.out.println( passwd );
}
final class java.lang.System |
final class java.io.Console |
- char[] readPassword()
Liest ein Passwort ein, wobei die eingegebenen Zeichen nicht auf der Konsole wiederholt werden. - Console format(String fmt, Object... args)
- Console printf(String format, Object... args)
Ruft String.format(fmt, args) auf und gibt den formatierten String auf der Konsole aus. - char[] readPassword(String fmt, Object... args)
Gibt erst eine formatierte Meldung aus und wartet dann auf die geschützte Passworteingabe. - String readLine()
Liest eine Zeile von der Konsole und gibt sie zurück.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.