CodeGym /Kurse /Java Syntax /Tastatureingabe

Tastatureingabe

Java Syntax
Level 3 , Lektion 7
Verfügbar

„Amigo, deine Zeit ist gekommen. Jetzt werde ich dir etwas über die Tastatureingabe erzählen.“

„Wir haben System.out verwendet, um Daten auf dem Bildschirm anzuzeigen. Um Eingaben zu erhalten, verwenden wir System.in.“

„Das hört sich einfach an.“

„Aber System.in hat ein Manko: Wir können damit nur Zeichencodes von der Tastatur einlesen. Um dieses Problem zu umgehen und große Datenmengen auf einmal zu lesen, verwenden wir ein komplexeres Konstrukt:“

Beispiel 1
Eine Zeichenkette und eine Zahl über die Tastatur eingeben
InputStream inputStream = System.in;
Reader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String name = bufferedReader.readLine(); //Read a string from the keyboard
String sAge = bufferedReader.readLine(); //Read a string from the keyboard
int nAge = Integer.parseInt(sAge); //Convert the string to a number.
Beispiel 2
Eine kompaktere Version des vorherigen Beispiels:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String name = reader.readLine();
String sAge = reader.readLine();
int nAge = Integer.parseInt(sAge);
Beispiel 3
Noch kompakter
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();

„Irgendwelche Fragen?“

„Äh... Ich habe nichts davon verstanden.“

„Wenn du eine Zeichenkette von der Tastatur einlesen möchtest, nutzt du am besten ein BufferedReader -Objekt. Aber dafür musst du das Objekt übergeben, von dem du Daten lesen willst. In diesem Fall ist das System.in.“

„Aber System.in und BufferedReader sind inkompatibel, also verwenden wir einen Adapter – ein InputStreamReader-Objekt.“

„Ich glaube, jetzt verstehe ich es. Was ist diese Scanner-Klasse?“

„Scanner kann praktisch sein, ist aber nicht sehr nützlich. Die Sache ist die, dass du auf deinem weiteren Weg (sowohl beim Lernen als auch bei der Arbeit) sehr oft BufferedReader und InputStreamReader verwenden wirst, Scanner dagegen nur sehr selten. In unserem Beispiel ist es praktisch, aber in Zukunft wirst du es nicht sehr oft gebrauchen können. Also werden wir es nicht so oft verwenden.“

„Okay, aber ich bin mir nicht sicher, ob ich alles verstanden habe.“

Kommentare (11)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Akanah Keto Level 5, Germany, Germany
23 April 2025
Ich versteht jetzt nur noch Bahnhof mit den InputReader und der Scanner-Klasse. In Java-Script wird das einfach gemacht mit Prompt. Gibt es für Java nicht so einen einfachen Befehl ?
Fynia Fricke Level 4, Germany, Germany
3 April 2024
Warum zum Arsch lese ich mir ein ganzes Kapitel zum scanner durch, gucke das Videos etc, um dann zu lesen: das machen wir aber nicht, mach lieber das von weiter oben, was nicht genauer erklärt wurde????
Furô Level 9, Germany
20 Januar 2023
Wenn ihr trotzdem die Scanner Klasse verwenden wollt, müsst ihr oben beim import noch folgendes angeben: import java.util.Scanner;
Max Völker Level 5, Germany, Germany
10 Februar 2022
Grüße, Ich habe mal eine blöde Frage? Schreibt ihr euch die Beispiele aus der Tabelle manchmal auf um es euch leichter zu merken und als Hilfsmittel noch mal drauf zu schauen ?
Paladius Level 4, Germany, Germany
6 Januar 2023
Ja, genau das mache ich ;-)
Minove Level 6, Germany
20 November 2021
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); muss man leider einfach auswenig lernen. Der Befehlt wird benötigt damit Java weiß was man vorhat und! Um die passenden Klassen zu importieren. Die passenden Klassen importieren? Wenn man das ganze nicht hier macht sondern z.B. in IntelliJ macht dann wird dort Automatisch auf die schon verfügbare Klasse zugegriffen, die ist in den Programmier Programmen Automatisch drin. Folglich: Die Zeile ist dafür da damit das Program weiß was man von ihm will und es das passende lade um zu funktionieren. Jetzt muss man aber auch noch sagen was man will. Dazu gibt man: String <name> = reader.readLine(); ein. Also string für die schriftliche eingabe, name damit das Program das eingegebene zuordnen kann. das nach dem = ist dazu da damit das programm wider weiß das es ne eingabe ist. Würde man: String name = reader.readLine(); String alter = reader.readLine(); String milchpakung = reader.readLine(); usw... schreiben weiß das Programm für jede Zeile 1. 1 Zeile = eine eingabe 2. werden die Zeilen name, alter, milchpackung usw von oben nach unten abgearbeitet Also... otto, 8, KuMuh Wenn wir dann: System.out.print(name + " hat mit " + 8 " Jahren erfolgreich" + milchpakung + " produziert"); schreiben würden und das Programm starten dann passiert erst nichts weil darauf gewartet wird das wir was eingeben. Nach der Eingabe kommt: Otto hat mit 8 Jahren erfolgreich KuMuh produziert.
Heimdall Level 9, Germany, Germany
25 April 2022
DAS ist mal eine erklährung die ein weiterhilft :) Danke
31 Dezember 2020
Am besten nebenbei noch YT-Videos zu den Themen schauen und sich andere Seiten zu dem Thema durchlesen :) es dauert immer bis man es versteht also keine sorge. Je mehr man dazu liest und je mehr man das gelernte einsetzt (einfach selber etwas programmieren und üben) desto schneller versteht man es auch :)
vossi Level 4
4 Oktober 2020
Wie habt ihr dafür das Verständnis bekommen. Ich bin völlig überfordert mit den Anwendungen in den nächsten Aufgaben 😐.
Blitzer Level 4, Österreich
1 November 2020
Ich auch.
Minove Level 6, Germany
20 November 2021
Ich auch zuerst. Die Lösung zu sehen hat mir geholfen. Das dann mit dem was hier erklärt wird zu vergleichen um das ganze nach zu vollziehen. Das meiste ist hierbei leider auswenig lernen. Mein Tipp: Versucht das was hier steht im Programm nach zu schreiben und mal auf start zu drücken, danach etwas rum probieren. Das programm sagt einem dann: ne...NE das geht so nicht xD Oder auch Hinweise warum. Ansonsten unter den Aufgaben immer fleißg nach fragen! Das was schon gefragt wurde oder Antworten auf meine hat am Ende immer geholfen (mir).