Scanner (Optional)
Die Klasse Scanner
Java beinhaltet bereits viele vorgefertigte Tools um gängige Aufgaben zu lösen. Eine davon ist das Einlesen und Verarbeiten von Benutzereingaben. Wir werden in diesem Modul nur Programme scheiben, welche mit dem Benutzer über die Konsole interagieren. Diese nennt man auch Konsolen-Applikationen.
Dafür bietet Java die Klasse java.util.Scanner
an. Sie "scannt" sozusagen die
Eingabe von Benutzer und gibt diese zurück.
Die Klasse Scanner
wird hier für wissbegierige vorgestellt, da Sie zum
Standard-Repetoir von Java gehört. Das Package mytools
wird ausserhalb der
BBZBL nicht verwendet.
Die BBZBL verwendet für dieses Modul die Klasse mytools.StdInput
. Ihr dürft
alle Aufgaben auch mit dem Scanner
lösen. Dafür gibt es jedoch keine
Musterlösungen.
Verwendung
Um den Scanner zu verwenden, müssen 3 Punkte beachtet werden:
import java.util.Scanner;
class MyClassWithScanner { // INFO: Der Klassenname ist beliebig!
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
// hier kann nun der scanner verwendet werden
String eingabe = scanner.next(); // next() gibt immer einen String zurück
System.out.println("Ihre eingabe war: " + eingabe);
}
}
- Er muss importiert werden mit
import java.util.Scanner;
- Er muss initialisiert werden mit
private static Scanner scanner = new Scanner(System.in);
- Er muss verwendet werden mit
scanner.next...
Weitere Methoden
Methode | Datentyp |
---|---|
next() | String |
nextLine() | String bis Enter |
nextInt() | int |
nextLong() | long |
nextFloat() | float |
nextDouble() | double |
🖊 A3: Text mit Scanner
einlesen
- Informieren Sie den Benutzer, dass er nun seinen Namen eintippen soll.
- Legen Sie eine
String
-Variable an, um die Antwort zu speichern. - Die Funktion, um Daten eingeben zu können, ist in der Klasse mit dem Namen
Scanner
enthalten.
Schritt für Schritt Anleitung
- Kopieren Sie den folgenden Code in eine Datei namens
EinUndAusgabe.java
public class EinUndAusgabe {
private static Scanner scanner = new Sc // hier fehlt noch was
public static void main (String[] args) {
System.out.println("Please type your name:");
String name = scanner // hier fehlt noch was!
}
}
-
Zeile 3: Vervollständigen Sie
new Sc
mitnew Scan
und drücken Sie danach CTRL+LEERTASTE.- Dadurch wird eine automatische Vervollständigung von Eclipse aktiviert welche ebenfalls den korrekte Import für die Klasse hinzufügt.
- Nun wurde Ihre Klasse gerade zu oberst mit folgender Zeile ergänzt, die
dafür sorgt, dass
Scanner
in Ihrer Klasse genutzt werden kann:import java.util.Scanner;
-
Zeile 7/8: Geben Sie direkt hinter
scanner
einen Punkt ein.-
Nun erscheint folgender Dialog, über welchen Sie die Methoden der Klasse
scanner
aufrufen können: -
Da wir einen String-Wert einlesen wollen, wählen gleich den obersten Eintrag
next()
und schliessen die Zeile mit einem Semikolon;
ab.
-
-
Als nächstes geben wir den eingegebenen Namen aus
- Dafür verwenden wir
System.out.println()
. Dies ist der Standardweg in Java text auf die Konsole auszugeben.
- Dafür verwenden wir
import java.util.Scanner;
public class EinUndAusgabe {
private static Scanner scanner = new Scanner(System.in);
public static void main (String[] args) {
System.out.println("Please type your name:");
String name = scanner.next();
System.out.println("Your name is " + name);
}
}
- Führen Sie das Programm aus. Funktioniert es? Begrüsst Sie Ihr Programm mit dem eingegebenen Namen?
Auf statische Methoden einer statischen Klasse wird immer über einen Punkt zugegriffen.
KlassenName.methodenName([optionaleParemeter]);
// ^
// wichtiger Punkt!
- Mit einem
+
können Strings Zusammensetzen werden - Der erste String sollte mit einem Leerzeichen Enden, wieso?
String name = "Herr Lehrer";
System.out.println("Your name is " + name);
// ^ Leerzeichen!
// Your name is Herr Lehrer
System.out.println("Your name is" + name);
// Your name isHerr Lehrer
Weitere Datentypen einlesen
Die Bibliothek unterstützt verschiedene Datentypen, wie aus der Tabelle der
Methoden ersichtlich ist. Anstelle von readString()
rufen Sie demnach
lediglich eine andere read...
-Methode auf.
int ganzZahl = scanner.nextInt();
char character = scanner.next().charAt(0);
String text = scanner.next();
double gleitKommaZahl = scanner.nextDouble();
boolean bool = scanner.nextBoolean();