Input/Output Einsteiger Syntax Frage

kornyclown

Neues Mitglied
Hallo die Herrschaften,
Ich bin Grafiker der sich aufgrund der direkten Anbindung von Python in meine Grafiksoftwares angefangen hat mit der Thematik Programming/Scripting zu beschäftigen. Über diese Brücke bin ich nun auch zu Java gekommen und habe als halber Umsteiger Fragen zur Syntax in Java.

Hier mal ein Beispiel, "input" in Python:
x = input("Bitte geben Sie irgendwas ein: ")

"input" in Java:
Java:
 BufferedReader x = new BufferedReader (new InputStreamReader(System.in));

 System.out.println("Geben Sie irgendwas ein:");

Frage 1:
Warum ist eine Input Anweisung in Java soviel komplizierter/ hat das für mich ungeahnte Vorteile?

Frage 2:
Bei meiner Input Anweisung in Python ist klar zu sehen dass die Zeile "Bitte geben Sie irgendwas ein: " Teil der Input Anweisung ist weil sie direkt dort formuliert wird.
In Java muss ich extra eine neue Zeile mit einem print Befehl schreiben die sogar mit einem ; von der Zeile mit System.in getrennt ist, also für meine Augen nicht zu der System.in Methode gehört. Woher weiß ich/seh ich auf was sich das "Geben Sie irgendwas ein: " bezieht? Ganz besonders wenn ich den Benutzer um mehrere Eingaben bitte.
 

Xeonkryptos

Bekanntes Mitglied
Dein Ansatz bezieht sich auf reine Streams, die du gerne ausgelesen haben möchtest.

Einfacher über die Konsole ohne Streams geht es mit der Klasse Scanner

Java:
Scanner taste = new Scanner(System.in);
System.out.print("Geben Sie eine Zahl ein");
int a = taste.nextInt();

Außerdem ist das System.out.println eine Methode, die dir nur Dinge auf der Konsole ausgibt.

Um nochmal konkret zu deine Fragenzu kommen:

Es ist nur viel komplizierter, wenn du mit Streams arbeitest, die du bei Kommunikation mit anderen Rechnern (Netzwerkprogrammierung) oder dem Ein-/Auslesen von Dateien und derartiger Spielchen sehen wirst und mit ihnen zu tun haben wirst.

Der BufferedReader in diesem Fall buffered, wie der Name schon sagt, alle Daten und gibt dir ein paar wenige Methoden mehr zu auslesen :)
Der Scanner, wie oben schon gezeigt, ist dort einfacher, sofern man die oben genannten Punkte nicht benötigt. Außerdem hast du, soweit ich das im Kopf habe, durch den BufferedReader eine Performance-Steigerung, als wenn du einen Stream so auslesen würdest, kann mich aber täuschen.

Du siehst, worauf sich das konkret bezieht, weil du wie bei meinem Beispiel danach eine Eingabe tätigen müsstest und diese dann in einer Variable gespeichert wird.
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Warum ist eine Input Anweisung in Java soviel komplizierter/ hat das für mich ungeahnte Vorteile?
Vielleicht weil Java in einer Zeit entstand in der es für Anwendungen bereits üblich war innerhalb von "Fenstern" zu laufen ;-) und wer programmiert/verwendet heute noch Programme die über Konsole mit dem User kommunizieren.
Meines Wissens standen GUIs und das Web schon immer im Fokus bei der Entwicklung von Java.

Ausserdem kann jeder - wenn man es nicht so "kompliziert" mag - sich schnell eine Methode schreiben, die genauso einfach anzuwenden ist:

Java:
	public static void main(String[] s) {
		String x = input("Bitte geben Sie irgendwas ein: ");
		System.out.println("Sie haben \"" + x + "\" eingegeben.");
	}
	
	static BufferedReader reader;
	static {
		reader = new BufferedReader(new InputStreamReader(System.in));
	}
	
	public static String input(String text) {
		System.out.print(text);
		String in = null;
		try {
			in = reader.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return in;
	}
 

0x7F800000

Top Contributor
Frage 1:
Warum ist eine Input Anweisung in Java soviel komplizierter/ hat das für mich ungeahnte Vorteile?
Die Vorteile sind eigentlich recht offensichtlich. Wenn ich sowas sehe:
Code:
input
dann erkenne ich daran eigentlich nicht viel: ich weiß nur, dass da irgendeine Form von "Input" kommt, aber da steht nicht woher, da steht nicht welche Art von Daten das sein soll, da steht nicht, wie ich auf den Datenstrom zugreifen kann, und da steht auch kein Typ, der zurückgegeben wird (okay, das wurde bei Python ja einfach vom Bug zum Feature umdeklariert, aber das ist eine andere Geschichte).

Wenn ich dagegen sowas sehe:
Java:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String x = reader.readLine();
dann weiß ich sofort:
- Es wird der Standard-Eingabestrom System.in angezapft
- Mit dem InputStreamReaders wird der Byte-Strom in Zeichen-Strom umgewandelt
- Dieser wird gepuffert
- Am Ende wird eine Zeile rausgelesen, die den Typ String hat.

Vor allem ist ein Baukastensystem erkennbar, mit dem man alle möglichen Datenströme von irgendwelchen Servern, Dateien, Sockets oder sonstwas einheitlich in den Griff bekommt.

Frage 2:
Bei meiner Input Anweisung in Python ist klar zu sehen dass die Zeile "Bitte geben Sie irgendwas ein: " Teil der Input Anweisung ist weil sie direkt dort formuliert wird.
In Java muss ich extra eine neue Zeile mit einem print Befehl schreiben die sogar mit einem ; von der Zeile mit System.in getrennt ist, also für meine Augen nicht zu der System.in Methode gehört. Woher weiß ich/seh ich auf was sich das "Geben Sie irgendwas ein: " bezieht? Ganz besonders wenn ich den Benutzer um mehrere Eingaben bitte.
Naja, fragen und Antworten kommen im Quelltext eben abwechselnd vor, was will man mehr? ???:L

Wenn's dir immer noch zu unübersichtlich ist, okay, dann schreib dir halt so eine "input"-Methode:
Java:
import java.io.*;
import static java.lang.System.*;

public class Dialog {

	private static BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
	static String input(String s) throws IOException{
		out.print(s + ": ");
		return reader.readLine();
	}
	
	public static void main(String[] args) throws Exception{
		out.println("Hallo "  + input("Geben Sie bitte ihren namen ein") + "!");
	}
}
Wenn Du dich wunderst, warum es das nicht in der Standard API gibt, die Antwort ist simpel: es verschleiert viel, und wirklich brauchen tut's einfach kein Mensch. So eine "input"-methode mag in 10-zeiligen Beispielen und Hausaufgaben hilfreich sein, aber in zwei Tagen brauchst du solchen Kram nicht mehr, und wirst dich, genau wie alle anderen, nicht mehr dran erinnern, dementsprechend wird es dich auch nicht stören.
 

kornyclown

Neues Mitglied
Wow, danke für eure ausführlichen Antworten. Die muss ich jetzt erstmal durcharbeiten.
Aber nich dass ich falsch verstanden werde, es geht mir nich direkt darum mir sofort ne Methode zu schreiben die die Javasyntax pythonähnlicher zu machen.
Es geht mir viel mehr darum als Einsteiger die syntaktischen Unterschiede zu verstehen damit ich auch z.B. in der Lage bin ein Skript von jemanden zu übernehmen und zu verstehen.
Ich verzichte ganz bewusst darauf mit IDEs zu beginn zu arbeiten da ich großen Wert darauf lege selbst zu verstehen was ich da mache.
 

0x7F800000

Top Contributor
Aber nich dass ich falsch verstanden werde, es geht mir nich direkt darum mir sofort ne Methode zu schreiben die die Javasyntax pythonähnlicher zu machen.
Das wird eh auf Dauer schwer gehen. Java ist einfach nicht "multiparadigmisch", insbesondere nicht funktional, und das führt bei Leuten, die von funktionalen Sprachen zu Java übergehen, zum unangenehmen Gefühl der amputierten Hände: man weiß nicht, wie man etwas lösen soll, bzw man ärgert sich über furchterregend verbose Lösungen (meine Erfahrung zumindest).

Ich verzichte ganz bewusst darauf mit IDEs zu beginn zu arbeiten da ich großen Wert darauf lege selbst zu verstehen was ich da mache.
Es schadet sicher nicht, alles ohne IDE einzutippen, und von der Konsole aus zu kompilieren, die ganzen Umgebungsvariablen richtig einzurichten usw usw. Auf Dauer würde ich dir aber wärmstens eine IDE (konkret: Eclipse) empfehlen, denn das ist imho die Stärke von Java: ultimativ geile IDE Unterstützung, und die Tatsache, dass der Compiler permanent die Fehler aus deinem Code rausprügelt, während du noch am schreiben bist.

Um einigen Schock-Effekten vorzubeugen:
1) Java ist geschwätzig, es sieht schnell nach furchtbar viel code aus. Das ist aber Gewöhnungssache, irgendwie wie bei XML: man muss nur lernen, es zu lesen.
2) Java mag nicht so "hoch" sein, wie manch andere Sprache, dafür ist es insgesamt vergleichsweise simpel, und es gibt meistens nur die eine Lösung für ein Problem.
3) Java hat ihren Platz bei bestimmten Anwendungsgebieten, und ist für manche andere Anwendungsgebiete völlig ungeeignet. Betrachte es deswegen nicht als "Ersatz" für Python oder was auch immer: füge es lieber als ein weiteres Werkzeug zu deinem Arsenal hinzu. Wenn du dann irgendwann feststellst, dass irgendwas in Java gar nicht geht, dann liegt es meistens nicht an Java, sondern daran, dass du mit einem Schraubenzieher Holz zu zersägen versuchst.
 

faetzminator

Gesperrter Benutzer
Bei meiner Input Anweisung in Python ist klar zu sehen dass die Zeile "Bitte geben Sie irgendwas ein: " Teil der Input Anweisung ist weil sie direkt dort formuliert wird.

Du musst dich umgekehrt fragen: Wenn ich einem fiktiven [c]input()[/c] einen String als Parameter übergeben muss, warum heisst die Methode dann input()? Ich erwarte, dass input() entweder parameterlos von irgendwo irgendwas holt, oder dass ich die Informationen zur Datenbeschaffung (in diesem Fall [c]System.in[/c]) mitgeben muss.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Erste Schritte Einsteiger-Video Bubblesort Bewertung Java Basics - Anfänger-Themen 11
C Erste Schritte Benötige Hilfe als Einsteiger Java Basics - Anfänger-Themen 9
W Habt ihr Ideen für ein Einsteiger? :) Java Basics - Anfänger-Themen 4
A geeignete Java-Projekte für Schüler (Einsteiger) Java Basics - Anfänger-Themen 28
I Erste Schritte Java und XML Codefragen von Java Einsteiger Java Basics - Anfänger-Themen 2
EnHancEd[] Exception Übung für Einsteiger Java Basics - Anfänger-Themen 14
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7
C Buch für Einsteiger gesucht Java Basics - Anfänger-Themen 2
E Kleine Hilfe für einen Einsteiger Java Basics - Anfänger-Themen 18
K Totaler einsteiger Java Basics - Anfänger-Themen 7
K Welche Entwicklungsumgebung für Einsteiger? Java Basics - Anfänger-Themen 16
P Email versenden für einsteiger Java Basics - Anfänger-Themen 6
A Einsteiger/ In Document schreiben Java Basics - Anfänger-Themen 9
P Welches Buch ist für Einsteiger(fast) ohne Vorwissen passend Java Basics - Anfänger-Themen 7
M Gutes einsteiger Buch? Java Basics - Anfänger-Themen 2
A Einsteiger-Problem - Frage zu Code Java Basics - Anfänger-Themen 10
B schon beim einsteiger-beispiel durchgefallen. Java Basics - Anfänger-Themen 2
G Übungen für Java-Einsteiger Java Basics - Anfänger-Themen 6
D Syntax-Highlighting im Frontend Java Basics - Anfänger-Themen 3
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
pkm Problem mit der JSP-Syntax Java Basics - Anfänger-Themen 2
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
C Überprüfen eines Queltextes auf Syntax-Fehler und Laufzeitfehler Java Basics - Anfänger-Themen 2
L SQLITE - Syntax error Java Basics - Anfänger-Themen 3
W Wie vermerke ich diese Struktogramm Passage in Java Syntax? Java Basics - Anfänger-Themen 8
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
wilmaed OOP Syntax beim Instanziieren mit new Java Basics - Anfänger-Themen 6
D Datentypen Datentyperstellung | Kompiler sagt Syntax Error doch ich find keine Lösung Java Basics - Anfänger-Themen 2
J Syntax error on token ";",, expected Java Basics - Anfänger-Themen 2
C Erste Schritte Syntax Error Java Basics - Anfänger-Themen 23
J java syntax verständnis Java Basics - Anfänger-Themen 6
D Erste Schritte Fehlermeldung "Syntax error on token ";", { expected after this token" Java Basics - Anfänger-Themen 13
1 Bei if-Anweisung: Syntax error on token Java Basics - Anfänger-Themen 5
D Fehler in der Syntax? Java Basics - Anfänger-Themen 6
L Nachkommastellen Runden, Problem mit Syntax " }" Java Basics - Anfänger-Themen 2
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
V MasterMind Syntax Probleme Java Basics - Anfänger-Themen 5
P AUTO_INCREMENT Syntax-Fehler Java Basics - Anfänger-Themen 2
M Syntax error on token ";", { expected after this token Java Basics - Anfänger-Themen 3
K Erste Schritte eclipse syntax error token Java Basics - Anfänger-Themen 5
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
P Erste Schritte if Syntax Java Basics - Anfänger-Themen 19
S Syntax Error - source level Java Basics - Anfänger-Themen 12
B Syntax error Java Basics - Anfänger-Themen 6
R Syntax error on token "}", delete this token Java Basics - Anfänger-Themen 2
S Syntax error on token "connect" Java Basics - Anfänger-Themen 4
K Klassen this-Referenz und Klassen/Methodenaufruf Syntax Java Basics - Anfänger-Themen 3
T Syntax für .split mit Klammern Java Basics - Anfänger-Themen 2
F Syntax- oder Semantikfehler? Java Basics - Anfänger-Themen 29
S Frage zu einem Syntax Java Basics - Anfänger-Themen 2
Luk10 Problem mit der Syntax von "+=" Java Basics - Anfänger-Themen 10
T Einen Syntax Checker programmieren Java Basics - Anfänger-Themen 3
J Datentypen Array Syntax Java Basics - Anfänger-Themen 2
S Anfängerproblem Syntax if Schleife Java Basics - Anfänger-Themen 13
Screen Problem mit der Syntax bei ActionListener Java Basics - Anfänger-Themen 3
U Dringend: Syntax error on token "else" Java Basics - Anfänger-Themen 8
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Y Anfängerfrage zu array(-Syntax) Java Basics - Anfänger-Themen 6
G Richtige Syntax für Bruch Java Basics - Anfänger-Themen 12
S Generic Methode: syntax klemmt Java Basics - Anfänger-Themen 10
C Frage zu Syntax-,Laufzeit-, Semantikfehler Java Basics - Anfänger-Themen 3
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
O Highscore Syntax-Problem Java Basics - Anfänger-Themen 3
K Erklärung der Syntax Java Basics - Anfänger-Themen 6
G nicht bekannter Java-Syntax Java Basics - Anfänger-Themen 4
H wieso syntax error bei else ? Java Basics - Anfänger-Themen 3
T klasse objekt, syntax Java Basics - Anfänger-Themen 2
G Problem mit JTextField.setText(); Syntax Java Basics - Anfänger-Themen 3
S Syntax frage Java Basics - Anfänger-Themen 4
K java syntax: wofür steht super(screen)? Java Basics - Anfänger-Themen 5
L Syntax von subString Java Basics - Anfänger-Themen 19
B Syntax error on token ";", { expected after this t Java Basics - Anfänger-Themen 7
J Syntax Java Basics - Anfänger-Themen 14
C Verstehe die Syntax nicht! Java Basics - Anfänger-Themen 2
M Suche einen ganz einfachen Editor (syntax Highlighting+comp) Java Basics - Anfänger-Themen 7
M Komische Syntax bei Double-Buffering-Beispiel Java Basics - Anfänger-Themen 2
H Fehlermeldung bei korrekter Syntax Java Basics - Anfänger-Themen 2
G Syntax der if-Anweisung (Thema getrennt!) Java Basics - Anfänger-Themen 7
S RegEx Syntax - ich verstehe sie einfach nicht! Java Basics - Anfänger-Themen 3
H Syntax Frage. Java Basics - Anfänger-Themen 5
X Syntax bei != Java Basics - Anfänger-Themen 4
L setCharAt Syntax ? Java Basics - Anfänger-Themen 6
D page forward (?) suche syntax Java Basics - Anfänger-Themen 25
S syntax error variable declarator ID expected Java Basics - Anfänger-Themen 3
E Komische Syntax Java Basics - Anfänger-Themen 3
C Syntax Probleme mit Runtime javascript Java Basics - Anfänger-Themen 9
N Code-Editoren mit Syntax-Highlighting Java Basics - Anfänger-Themen 7
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben