Umgang mit System.out.println() und .print()

jibblejava

Mitglied
Hallo Forenfreunde,

Bei der Nutzung der println() und print() Methode ist mir Folgendes aufgefallen, dessen Hintergrund ich gerne näher verstehen möchte:

Für das bessere Verständnis zwei Beispiele:

Java:
import Prog1Tools.IOTools;

public class TestForum
{
	public static void main (String[] args)
	{
		for (int i = 0; i < 3; i++)
		{
			System.out.print(i);
		}
		System.out.println();
	}
}

Als Ausgabe bekomme ich nun: 012

Das 2. Beispiel:

Java:
import Prog1Tools.IOTools;

public class TestForum
{
	public static void main (String[] args)
	{
		for (int i = 0; i < 3; i++)
		{
			char b = IOTools.readChar("Enter Char");
			System.out.print(b);
		}
		System.out.println();
	}
}

erhalte ich bei einer Eingabe von a, dann b, dann c

"Programm wird ausgeführt ...
Enter Chara
aEnter Charb
bEnter Charc
c

Programm beendet"

Kann mir jemand genauer erläutern, welche Logik im zweiten Beispiel hinter dem ausgegebenen Ergebnis steht?

Meine bisherige Erfahrung mit println() und print() ist folgende:

wird print() in einer Schleife verwendet, verhält es sich wie ein "stummer Zeichensammler". Da die Methode keinen Zeilenvorschub vorsieht, reiht sie im Laufe der Schleifendurchgänge die auszugebenden Zeichen aneinander.
Mit println() können alle Zeichen nach erreichen der Abbruchbedingung in einer Zeile stehend hintereinander abgebildet werden.

Im Beispiel zwei ist das nicht der Fall. Dort heftet sich das Zeichen an die nachfolgende Zeichenkette an und scheint nicht mit der println()-Methode verknüpft zu sein.

Das anzustrebende Resultat meinerseits ist, auch mit einer Zeicheneingabe in der Schleife nur eine Ausgabe aller eingebenen Zeichen nach dem Abschluss der Schleife anzeigen zu lassen.


Ich bin euch für jede Hilfe und/oder Hinweis dankbar!
 

MR_UNIX

Bekanntes Mitglied
Die IOTools scheinen von dir programmiert zu sein, am besten solltest du den Code von der readChar() Methode dann auch noch posten, denn ganz offensichtlich willst du ja wissen warum sie eine bestimmte (und zugegebenermaßen seltsame) Ausgabe erzeugt.
 

fischefr

Aktives Mitglied
Zunächst mal:
print schließt die Ausgabe nicht mit einem Zeilenumbruch ab, println schon.

Was passiert jetzt?
Dein Programm schreibt "Enter char" (ohne Zeilenumbruch) auf den Bildschirm. Du tippst "a" + Return, was bei der Eingabe auch auf dem Bildschirm wiedergegeben wird. Durch das Return landest du jetzt in der nächsten Bildschirmzeile. Das "a" wird von deiner Print-Anweisung ausgeben, allerdings ohne einen Zeilenumbruch d.h. du bleibst in der gleichen Bildschirmzeile stehen. Jetzt schreibt dein Programm erneut "Enter char" in die gleiche Zeile, in der bereits das "a" steht und fordert wieder zur Eingabe auf. Letztendlich beginn damit das Spielchen wieder von vorne.

Zum Thema "stummer Zeichensammler" und andere, ähm seltsame Thesen:
System.out arbeitet folgendermaßen:

Alle Ausgaben werden gepuffert, bis zum Zeilenumbruch. Dann erfolgt die Ausgabe.

Interessant ist in diesem Zusammenhang, dass bei System.err keine Pufferung erfolgt, sondern hier die (Fehler-)ausgabe sofort erfolgt.
 
Zuletzt bearbeitet:

jibblejava

Mitglied
Vielen Dank für die Antwort.

Die IOTools beziehe ich als Blackbox aus Editing Java Easily. Nach erster Suche habe ich auch leider keine Möglichkeit gefunden, die Programmcodes der verschiedenen IOTools Methoden anzeigen zu lassen.
 

jibblejava

Mitglied
@fischefr:

Die Information über den Zusammenhang von System.out und dem Puffer erklärt auch den "stummen Zeilensammler", vielen Dank für diesen Hinweis.
Durch den Zeilenumbruch der println()-Methode wird der Puffer entleert und angezeigt.

Interessant ist jetzt vor allem, mit welcher Möglichkeit ich im Falle des zweiten Beispiels alle Zeichen, eingegeben über die Konsole, wieder gebündelt ausgeben kann, sobald meine Schleife bis zur Abbruchbedingung durchlaufen wurde.

Hinweise und Tipps zur Lösung dieses Problems nehme ich dankend an.
 
Zuletzt bearbeitet:

fischefr

Aktives Mitglied
Java:
import Prog1Tools.IOTools;
 
public class TestForum
{
public static void main (String[] args)
{
eingabe = ""
for (int i = 0; i < 3; i++)
{
char b = IOTools.readChar("Enter Char");
eingabe += b
}
System.out.println(eingabe);
}
}

Meinst du so etwas? Ist übrigens ungetestet, also ohne Gewähr! Die Einrückungen haben übrigens die Kollegen copy und paste auf dem Gewissen :oops:
 
Zuletzt bearbeitet:

jibblejava

Mitglied
Super, vielen Dank!
Der Code ist ausführbar und liefert das gesuchte Ergebnis.
Die eingegebenen Zeichen werden in der Instanzvariable eingabe iterativ mit jedem Schleifendurchlauf gespeichert.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Umgang mit dem Type "Date" Java Basics - Anfänger-Themen 6
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
X Probleme im Umgang mit PriorityQueue Java Basics - Anfänger-Themen 75
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
N Umgang mit Domain Framework Java Basics - Anfänger-Themen 2
F Umgang mit referenzierten Objekten bei ArrayList Java Basics - Anfänger-Themen 1
C Hilfe für Kommentar-Zapper gesucht / Umgang mit Console Java Basics - Anfänger-Themen 0
M Umgang mit Thread/ Synchronisation/ Deadlock-Vermeidung Java Basics - Anfänger-Themen 5
J Umgang mit großen Datenmengen Java Basics - Anfänger-Themen 9
B Hilfe mit dem umgang von vererbung Java Basics - Anfänger-Themen 3
G Erste Schritte Fragen zum Umgang mit CSV Java Basics - Anfänger-Themen 2
M Verständnisfrage im Umgang mit Map Java Basics - Anfänger-Themen 10
J Effizienter Umgang mit großen Dateien Java Basics - Anfänger-Themen 7
I Umgang mit ByteBuffer Java Basics - Anfänger-Themen 11
I [Java] Umgang mit abstrakten Klassen, Interfaceklassen (BSP) Java Basics - Anfänger-Themen 12
M Der Umgang mit Iterator - Wie ein Objekt aus einer ArrayList Java Basics - Anfänger-Themen 2
J Umgang mit klassen ? Java Basics - Anfänger-Themen 3
J Umgang mit SQL Connections Java Basics - Anfänger-Themen 3
C Umgang mit Dateien Java Basics - Anfänger-Themen 4
G Umgang mit CSV-Dateien Java Basics - Anfänger-Themen 17
D System.out.println Java Basics - Anfänger-Themen 1
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
paulen1 Methoden Unerwünschte Ausgabe bei System.out.print in For-Schleife Java Basics - Anfänger-Themen 8
M Keine Ausführung von System.out.println() Java Basics - Anfänger-Themen 3
O System.out array Java Basics - Anfänger-Themen 4
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
H Befehl wird nicht ausgeführt - System.out.println Java Basics - Anfänger-Themen 3
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
S Anweisungen verstehen System.out.print/println Java Basics - Anfänger-Themen 2
B Warum werden meine System.out.println's übersprungen? Java Basics - Anfänger-Themen 9
I System.currentTimeMillis() nutzen Java Basics - Anfänger-Themen 2
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
B Input/Output System.out.print mit und ohne "" Java Basics - Anfänger-Themen 5
T System.out.println() Java Basics - Anfänger-Themen 5
M System.property persistieren Java Basics - Anfänger-Themen 6
N (Java) Regristrierung und Login System mit einer Datenbank Java Basics - Anfänger-Themen 5
A Input/Output System.out Ausgabe aktualisieren, ohne Konsole vollzuspamen Java Basics - Anfänger-Themen 2
R Input/Output Frage zu System.out.println Java Basics - Anfänger-Themen 5
S System.out.printIn("Hello, World!"); Java Basics - Anfänger-Themen 3
A Passwort System Java Basics - Anfänger-Themen 4
N Input/Output System.in funktioniert nicht Java Basics - Anfänger-Themen 4
S Input/Output System.out.println - Manipulieren bzw. Alternative..? Java Basics - Anfänger-Themen 2
E Was ist die JRE System Library? Java Basics - Anfänger-Themen 3
V System.out.println zu JTextArea Java Basics - Anfänger-Themen 6
V OOP System.out.println(Objekt) Java Basics - Anfänger-Themen 3
D int x in System.out.println(), aber wie? Java Basics - Anfänger-Themen 1
J Variablen Komsiche System.in.read() return-value? Java Basics - Anfänger-Themen 3
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
N System Proxy verwenden Java Basics - Anfänger-Themen 0
C system.out.printf mit streams benutzen Java Basics - Anfänger-Themen 7
L system.print.out geht nicht Java Basics - Anfänger-Themen 11
D Ausgabe einer Matrix mit System.out.println Java Basics - Anfänger-Themen 6
F System kann die Datei nicht finden Java Basics - Anfänger-Themen 7
R ArrayList - System.out.println nur einmal, statt 10 mal Java Basics - Anfänger-Themen 5
M Verwendung von System.exit(0) problematisch? Java Basics - Anfänger-Themen 1
D system.out.println >> JTextArea Java Basics - Anfänger-Themen 1
O Frage zu System.out.println() Java Basics - Anfänger-Themen 1
G System.out.printf geht nicht Java Basics - Anfänger-Themen 6
A System.out.println() - Aufbau Java Basics - Anfänger-Themen 1
D JDK installieren No JVM could be found on your system. Java Basics - Anfänger-Themen 9
Z System(einstellungen) per Java ändern/Steuern | Betriebssystembezogen Java Basics - Anfänger-Themen 7
M Variablen Ausgabe bei System.out.format? Java Basics - Anfänger-Themen 3
FrankR2 Grundsätzliches Verständnisproblem: Java 32/64-bit; Windows 7/8, 32/64-bit-System Java Basics - Anfänger-Themen 5
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
W Input/Output System.in.read erzeugt nicht, was ich will Java Basics - Anfänger-Themen 1
C Input/Output System.in.read() gibt nicht -1 zurück? Java Basics - Anfänger-Themen 3
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
G classname.System.out.println(); ? Java Basics - Anfänger-Themen 2
H Einfluss von System.out auf Programm Java Basics - Anfänger-Themen 2
K System.currentTimeMillis() und die Sommerzeit Java Basics - Anfänger-Themen 5
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
G Thread stoppen mit System.in.read() Java Basics - Anfänger-Themen 13
M CSV-File aus datei system einlesen Java Basics - Anfänger-Themen 3
R Char wird in System.out.print(); nicht ausgegeben Java Basics - Anfänger-Themen 6
T System.out.print : Frage zu Aufbau Java Basics - Anfänger-Themen 4
P Update System Java Basics - Anfänger-Themen 16
T If ; else error on system token delete Java Basics - Anfänger-Themen 5
M System.getProperty("java.vm.version") liefert build-Version Java Basics - Anfänger-Themen 4
O If in System.out.println Java Basics - Anfänger-Themen 11
J HILFE Benutzen einer Klasse aus JRE System Library Java Basics - Anfänger-Themen 4
T Erste Schritte import java.lang.System.out Java Basics - Anfänger-Themen 4
N Erste Schritte Ausgabe in System.out Java Basics - Anfänger-Themen 13
D Scanner(System.in) Schleife Java Basics - Anfänger-Themen 7
G Input/Output System.in.read & Scanner Java Basics - Anfänger-Themen 2
H System.out umleiten Java Basics - Anfänger-Themen 5
J Erste Schritte System.out.print (Fehlermeldung) Java Basics - Anfänger-Themen 14
C System.out in String schreiben Java Basics - Anfänger-Themen 2
P System - Tage erkennen ( System Time ?) Java Basics - Anfänger-Themen 3
lulas[]args Alternative zu System.err.println(); Java Basics - Anfänger-Themen 5
X Eclipse System.out.print fehler Java Basics - Anfänger-Themen 5
K char-int-Addition in System.out.print Java Basics - Anfänger-Themen 3
O Tabelle Formatieren mit system.out.format Java Basics - Anfänger-Themen 11
F System.getProperty("line.separator") funkt. nicht Java Basics - Anfänger-Themen 4
N Erste Schritte System.err und System.out Java Basics - Anfänger-Themen 5
Z System.out.format, Hilfe. Java Basics - Anfänger-Themen 14
C System.out.println Java Basics - Anfänger-Themen 4
R System.exit mit String als Rückgabedatentyp Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben