~Java4Beginners~
~Java4Beginners~

Konsoleneingabe mit der Klasse Scanner

Eine schnelle und einfache Methode um Text von der Konsole einzulesen, stellt die Klasse Scanner zur Verfügung. Um die Eingabe nutzen zu können, sind allerdings ein paar kleine Schritte notwendig, welche bereits auch in die Objektorientierung fallen. Diese werden hier nur kurz angesprochen und das nötigste erklärt.
Folgende Schritte sind notwendig, um eine Konsoleneingabe über die Scanner-Klasse zu ermöglichen.
  1. importieren der Scanner-Klasse
  2. Erzeugen eines Scanner-Objektes
  3. Aufruf der richtigen Methode des Scanner-Objektes

Beispiel zur Verwendung der Klasse Scanner


// importieren der Klasse Scanner
import java.util.Scanner;

/**
 * Anwendungsbeispiel Klasse Scanner_use
 * @author Markus Badzura
 */
public class Scanner_use 
{
    public static void main(String[] args) 
    {
        // Erzeugen eines Scanner-Objektes
        Scanner sc = new Scanner(System.in);
        int Zahl;
        System.out.println("Bitte geben Sie eine Zahl ein.");
        // einlesen der Konsoleneingabe und initialisieren in Variable
        Zahl = sc.nextInt();
    }
}

import java.util.Scanner;

Wenn wir mit der Scanner-Klasse arbeiten wollen, müssen wir unserer Klasse das auch sagen. Dies passiert mit der import-Anweisung. Diese erfolgt direkt nach dem package-Import. Je weiter wir in der Programmierung fortschreiten, desto öfters wird es notwendig sein, solche Imports vorzunehmen. Man kann den Import auch mit einer Wegbeschreibung vergleichen. Wir geben dem Programm ScannerBeispiel.java eine Wegbeschreibung zur Klasse Scanner, damit das Programm mit diesem Hilfsmittel arbeiten kann, d. h. damit das Programm weiß, wo die benötigten Informationen hinterlegt sind.

Scanner-Objekt erzeugen


Scanner sc = new Scanner(System.in);
Anweisung Bedeutung
Scanner Ähnlich wie bei der Variblendeklaration der Datentyp wird hier der Objekttyp angegeben. In unserem Falle ist der Objekttyp Scanner
sc Hier handelt es sich um den Objektnamen, äquivalent zum Variablennamen
= Zuweisungsoperator, d. h. unserem Objekt sc wird nun ein Wert, bzw. eine Objektableitung zugewiesen.
new new ist das Schlüsselwort, welches für die Erzeugung eines neuen Objektes verantwortlich ist.
Scanner(System.in) Aufruf des Konstrukturs der Klasse Scanner mit Übergabe eines Parameterwertes, d. h. in der Klasse Scanner gibt es einen Konstruktur, ähnlich einer Bauanleitung, der die Fähigkeiten des Objektes und den Umfang der Funktionalität festlegt.

Auszug der Methoden der Klasse Scanner

Sie sehen nun eine Auswahl der der möglichen Methoden dieses Objektes. Vorab gesagt sei, dass die Scanner-Klasse nicht nach Fehleingaben prüfen wird. Wenn Sie über die Methode .nextInt() einen Int-Wert einer int-Variablen zuweisen wollen, muss in der Konsole auch eine Int-Zahl eingegeben worden sein. Wenn nicht, wird es zu einem Programmabruch kommen.
Grundsätzlich handelt es sich bei der Konsoleneingabe um den Objekttyp String, d. h. um eine Zeichenkette. Die Methoden der Scanner-Klasse wrappen diesen String in den jeweils gewünscht Datentyp. Sollte das nicht möglich sein, wird das Programm mit einer Fehlermeldung abgebrochen.
Aufgabe Methode Beispiel
Konsoleneingabe einem Objekt vom Typ String zuweisen next() String eingabe = sc.next();
Konsoleneingabe einer Variablen vom Datentyp int zuweisen nextInt() int zahl = sc.nextInt();
Konsoleneingabe einer Variablen vom Datentyp double zuweisen nextDouble() double zahl = sc.nextDouble();
Die restlichen relevanten Methoden nextByte(), nextShort(), nextLong(), nextFloat() sollten selbsterklärend nun sein.

Abfangen der InputMismatchException

Bereits im Vorgriff auf die Exception - Behandlung zeige ich hier kurz, wie Sie eine Fehleingabe prinzipiell abfangen können, ohne dass sich Ihr Programm "aufhängt".
Dies erfolgt mit dem sogenannten try-catch-Block. Dieser Block besagt: Versuche das durchzführen, was im Bereich try steht. Falls es misslingt, fange (catch) den Fehler auf und mache weiter. Der Exception-Typ muss in diesem Falle ebenfalls importiert werden.

// importieren der Klasse Scanner
import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * Anwendungsbeispiel Klasse Scanner_use
 * @author Markus Badzura
 */
public class Scanner_use 
{
    public static void main(String[] args) 
    {
        // Erzeugen eines Scanner-Objektes
        Scanner sc = new Scanner(System.in);
        int Zahl;
        System.out.println("Bitte geben Sie eine Zahl ein.");
        // einlesen der Konsoleneingabe und initialisieren in Variable
        try
        {
            Zahl = sc.nextInt();
        }
        catch(InputMismatchException e)
        {
            System.out.println("Das war keine Ganzzahl");
        }
    }
}
nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-05-02