Java Schnellstart – User Input auslesen

Bislang haben wir nur Dateien eingelesen und auf dem Bildschirm ausgegeben. Jedoch ist es oft sinnvoll, Eingaben von Benutzern entgegenzunehmen und diese dann auszuwerten oder auf dem Bildschirm anzuzeigen. Natürlich kann auch eine Textdatei, ein Audioeingang oder gar ein Video-Stream eine Eingabe von einem Benutzer sein, jedoch werden wir uns in dieser Lektion nur auf die Eingabe über die Tastatur in eine Konsole beschränken.

Benutzereingaben mit der Scanner-Klasse einlesen

In der letzten Lektion hast du bereits die Klasse "Scanner" beim Einlesen von Dateien kennengelernt. Diese Klasse kann ebenso gut Konsoleneingaben auswerten. Die Scanner-Klasse finden wir im java.util Modul. Das ist sehr praktisch, da du sie für viele verschiedene Eingaben wie Dateien, Tastatureingaben, Konsoleneingaben, Audio-Eingaben u.v.m. verwenden kannst.

Um Konsoleneingaben auszulesen, bietet Java eine fest definierte Variable an - nämlich "System.in".

Code-Beispiel User-Input mit der Scanner-Klasse:

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

class Main {
  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);  // Scanner mit System.in
    System.out.println("Bitte gib deinen Namen ein: ");
    String name = s.nextLine();  // Eingabe auslesen
    System.out.println("Dein Name lautet " + name);  // Ausgabe deines Namens
  }
}
Code ausprobieren ×

Probiere es selbst aus:

Weitere Methoden der Scanner-Klasse

Neben der nextLine() Methode, welche einen String zurückgibt, gibt es noch weitere sinnvolle Methoden, wie bspw.:

  • nextBoolean()
  • nextByte()
  • nextDouble()
  • nextFloat()
  • nextInt()
  • nextLong()
  • nextShort()

Diese Methoden lesen den Input ein und wandeln diese Eingabe dann in den jeweiligen zugehörigen Datentyp um. Im Anschluss geben sie den umgewandelten Wert zurück (Type Casting).

Code-Aufgabe: Passwort-Schutz

Im unten stehenden Code-Editor findest du bereits zwei Variablen:

  • eine Variable enthält einen Benutzernamen und
  • die andere ein Passwort.

Deine Aufgabe:

  1. Importiere das Scanner-Modul: import java.util.Scanner;
  2. Beim Starten des Programms soll der Nutzer den Benutzernamen und ein Passwort eingeben können (User-Input).
  3. Im Anschluss soll er eine Rückmeldung erhalten, ob die eingegebenen Daten korrekt waren.

Kleiner Tipp für die Aufgabenlösung: Da ein "String" ein Objekt, also ein Referenztyp, ist, kannst du hier nicht einfach den Vergleichsoperator verwenden. Das kommt daher, dass zwei Strings denselben Text speichern, aber trotzdem unterschiedliche "Objekte" sein können. Um zwei Strings auf Gleichheit zu überprüfen, bietet ein String die Methode equals(String vergleichstext) an. Diese Methode liefert ein Boolean (True oder False) zurück.

[lp_spoiler title="Lösung anzeigen" class="da"]

import java.util.Scanner;

class Main {

  public static void main(String[] args) {
    String benutzername = "Admin";
    String passwort = "?DiesesPasswortIstNichtSehrGut4";

    Scanner eingabe = new Scanner(System.in);
    System.out.println("Benutzername: ");
    String eingabeName = eingabe.nextLine();
    System.out.println("Passwort:");
    String eingabePasswort = eingabe.nextLine();

    if(benutzername.equals(eingabeName) && passwort.equals(eingabePasswort))
    {
      System.out.println("Erfolgreich angemeldet.");
    }
    else
    {
      System.out.println("Leider waren deine Daten nicht korrekt.");
    }
  }
}

[/lp_spoiler]

Fazit

Ob Spiele, Office-Programme oder moderne Foto-Bearbeitungsprogramme die meisten Anwendungen, welche wir tagtäglich verwenden, bieten eine gewisse Eingabe durch den Benutzer. Diese Eingabedaten können wir verarbeiten, sodass der User sein gewünschtes Ergebnis erhält. Die Eingabe über die Konsole ist sehr simpel. Als nächstes könntest du dich zum Beispiel, um eine Eingabe mit einer grafischen Benutzeroberfläche kümmern.