toString-Methode gibt immer null vor Variable aus

passi

Mitglied
Hi, folgende toString-Methode habe ich definiert:

Java:
	public String toString() {
		for (int i = 1; i <= getAnzahlDiamanten(); i++) {
			d += "D";
		}

		for (int i = 1; i <= getAnzahlRubine(); i++) {
			r += "R";
		}

		for (int i = 1; i <= getAnzahlSmaragde(); i++) {
			s += "S";
		}
		return "(" + d + r + s + ")";
	}

So, in einem Objekt liegen z.B. 2 Diamanten, 3 Rubine und 4 Smaragde. Jetzt sollen die Edelsteine wie folgt ausgegeben werden:
Java:
(DDRRRSSSS)

aber die Ausgabe ist immer folgende:
Java:
(nullDDnullRRRnullSSSS)

In derselben Klasse, aber nicht in der toString-Methode habe ich folgende Variablen deklariert und initialisiert:
Java:
private String d = null;
	private String r = null;
	private String s = null;

Ich weiß nicht warum immer vor der Variablen null ausgegeben wird.

Gruß

passi
 
G

Gast2

Gast
Schau dir an was
Java:
System.out.println(null + "D");
liefert.
 

passi

Mitglied
Das ging mir auch schon durch den Kopf. Klar das bei
Java:
System.out.println(null + "D");

die Ausgabe

Java:
nullD
ist.

Nur komme ich nicht darauf, den Fehler zu beheben. Die String-Variablen nicht zu initialisieren bringt natürlich nichts, da der Compiler die Variablen doch selbstständig mit null initialisiert. Die for-Schleifen sollten so bleiben, damit ich soviele "R" ausgegeben bekomme, wie Rubine auch vorhanden sind.
 
G

Gast2

Gast
Dann initialisier die Variablen doch mit nem leeren String:
Java:
private String d = "";
 

passi

Mitglied
:) Ja klar, so einfach eigentlich. Vielen Dank!
Das eigentliche Problem hat sich somit erledigt, mich würde nur interessieren ob der Code so ok ist oder ist es unschön extra Objektvariablen (String d usw.) anzulegen?!
 
G

Gast2

Gast
Ja, ich würde die Instanzvariablen d r und s rausschmeißen, die brauchst du ja nur in der toString Methode.
Machs doch z.b. so:
Java:
public String toString() {
    String s = "(";
    for (int i = 1; i <= getAnzahlDiamanten(); i++) {
        s += "D";
    }
 
    for (int i = 1; i <= getAnzahlRubine(); i++) {
        s += "R";
    }
 
    for (int i = 1; i <= getAnzahlSmaragde(); i++) {
        s += "S";
    }
    s += ")";
    return s;
}
Das ganze kann man dann mit nem StringBuilder noch etwas schöner lösen.
 

passi

Mitglied
Ich hätte da doch noch einmal eine Frage. Wenn ich meine Version der toString-Methode benutze und im Verlauf die Diamanten, Rubine und Smaragde alle auf 0 setze, die Truhe somit leer ist, dann bekomme ich aber immer noch die Ausgabe von vorher. Folgend das Problem ganz konkret:

Java:
Diamanten im Schatzkaestchen: 2
Rubine im Schatzkaestchen: 3
Smaragde im Schatzkaestchen: 4
(DDRRRSSSS)
Diamanten im Schatzkaestchen: 0
Rubine im Schatzkaestchen: 0
Smaragde im Schatzkaestchen: 0
(DDRRRSSSS)

Wundert mich, mit der Methode von EikeB tritt das Problem nicht auf. Ich habe auch beim erneuten Aufruf meiner info-Methode (die das Objekt zurückgibt) folgende Zeile mal explizit mit angegeben:
Java:
System.out.println(chest.ausgeben().toString());
, dies ändert aber nichts. Wo liegt das Problem und wann wird die toString-Methode immer aufgerufen? Wenn das Objekt an den Caller zurückgegeben wird?

Gruß

passi
 
G

Gast2

Gast
Du hast ja deine Strings auch als Instanzvariablen angelegt. Einmal gefüllt bleiben die Strings gefüllt bis du denen was anderes zuweist.
 

passi

Mitglied
Ok, dann bräuchte ich die Instanzvariablen in meiner Methoden leeren() nur wieder mit einem leeren String initialisieren. Das hin und her spricht nun ganz klar für deine Methode :)
Danke
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Einrücken inner der toString()-Methode Java Basics - Anfänger-Themen 34
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
M Die Inhalte eines Arrays mit der Methode Arrays.toString ausgeben Java Basics - Anfänger-Themen 4
H toString-Methode Java Basics - Anfänger-Themen 24
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
J toString() Methode und ArrayList Java Basics - Anfänger-Themen 1
H Erste Schritte Arrayes.toString methode funktioniert nicht Java Basics - Anfänger-Themen 2
A Problem mit toString Methode Java Basics - Anfänger-Themen 8
T String toString methode nicht vererbt ... Java Basics - Anfänger-Themen 4
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
A ToString()-Methode richtig benutzen Java Basics - Anfänger-Themen 3
J Vererbung Überschriebene toString-Methode aufrufen Java Basics - Anfänger-Themen 10
B Methoden toString Methode mit Schlüsselwort new Java Basics - Anfänger-Themen 3
L toString()-Methode in verschieden Klassen Java Basics - Anfänger-Themen 3
R Frage zu statischer Methode toString() Java Basics - Anfänger-Themen 3
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
F toString Methode ausgeben Java Basics - Anfänger-Themen 3
S toString-Methode für Map Java Basics - Anfänger-Themen 15
L OOP hilfe bei tostring methode Java Basics - Anfänger-Themen 6
D Frage zum Aufruf einer toString-Methode Java Basics - Anfänger-Themen 2
V toString()-Methode Java Basics - Anfänger-Themen 9
S PrintWriter-Probleme mit toString Methode->Person@17182c1 Java Basics - Anfänger-Themen 10
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
W ArrayList und toString Java Basics - Anfänger-Themen 17
W toString bei composition Java Basics - Anfänger-Themen 4
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
M Polymorphie toString Java Basics - Anfänger-Themen 13
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
P falscher booleanwert bei toString Java Basics - Anfänger-Themen 4
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
J Methoden toString()-Date Formatter Java Basics - Anfänger-Themen 8
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
E Vererbung mit toString() Java Basics - Anfänger-Themen 6
O Referenz - toString Java Basics - Anfänger-Themen 9
B toString mit optionaler Ausgabe überrschreiben Java Basics - Anfänger-Themen 5
C Methoden toString Java Basics - Anfänger-Themen 4
B toString() Dilemma Java Basics - Anfänger-Themen 7
D Arrays.toString spuckt null aus? Java Basics - Anfänger-Themen 3
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
K array in toString des objektes ausgeben Java Basics - Anfänger-Themen 1
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K toString() Java Basics - Anfänger-Themen 1
I Vererbung toString() Frage Java Basics - Anfänger-Themen 5
E Richtige Ausgabe nur mit toString() - Warum? Java Basics - Anfänger-Themen 4
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
A JList / toString modify Java Basics - Anfänger-Themen 2
M toString gibt "null" statt "0.0" aus Java Basics - Anfänger-Themen 5
M toString Java Basics - Anfänger-Themen 7
H Integer.toString(int i) vs. String.valueOf(int i) Java Basics - Anfänger-Themen 12
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
N .toString() und (string) Java Basics - Anfänger-Themen 2
S schwierigkeit mit in der verwaltungsklasse benutzen von toString() Java Basics - Anfänger-Themen 7
J Zweidimensionales Array durch ToString ausgeben lassen Java Basics - Anfänger-Themen 21
N Matrix an toString Java Basics - Anfänger-Themen 7
A Werteausgabe des Construktors mit toString Java Basics - Anfänger-Themen 2
D super.tostring Java Basics - Anfänger-Themen 8
A Stringarray toString Java Basics - Anfänger-Themen 5
S Escape Sequenz in der toString() ? Java Basics - Anfänger-Themen 4
A Arrays.asList(s).toString() ohne [] und , Java Basics - Anfänger-Themen 3
P toString Java Basics - Anfänger-Themen 4
M .toString(); // Ausgabe: Attribut von Vaterklasse Java Basics - Anfänger-Themen 12
K toString Java Basics - Anfänger-Themen 10
A Object -> String mit valueOf, toString oder cast ? Java Basics - Anfänger-Themen 6
R getClass und getName sowie toString Java Basics - Anfänger-Themen 10
D Arrays.toString problem Java Basics - Anfänger-Themen 2
D array.toString() wieso funktioniert es nicht Java Basics - Anfänger-Themen 4
D toString überschreiben + Exception werfen Java Basics - Anfänger-Themen 3
H toString / println Java Basics - Anfänger-Themen 2
H toString() erben? Java Basics - Anfänger-Themen 3
A Arrays.toString() ohne [ und ] Java Basics - Anfänger-Themen 2
K Arrays.toString(); funktioniert nicht Java Basics - Anfänger-Themen 4
A byte.toString() -> Datenmüll Java Basics - Anfänger-Themen 52
K Problem mit .toString und FileReader Java Basics - Anfänger-Themen 2
G toString Problem Java Basics - Anfänger-Themen 12
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
T Warum Fehlermeldung bei diesem ToString Programm? Java Basics - Anfänger-Themen 2
B toString Java Basics - Anfänger-Themen 5
S Was macht [Integer.toString(number, tarRadix)] Java Basics - Anfänger-Themen 3
G Probleme bei toString Überschreibung Java Basics - Anfänger-Themen 6
M int toString Datentypen Umwandeln, AnfängerProblem Java Basics - Anfänger-Themen 3
T keine Ausgabe von toString obwohl keine Fehlermeldung Java Basics - Anfänger-Themen 5
D ToString Java Basics - Anfänger-Themen 3
C Bedeutung von toString im Bezug auf Text Java Basics - Anfänger-Themen 4
N char[] aus JPasswordField toString() Java Basics - Anfänger-Themen 6
T Boolean toString ? Java Basics - Anfänger-Themen 3
H toString(); varargs; bitSet Java Basics - Anfänger-Themen 8
M getClass() und getClass().toString() Java Basics - Anfänger-Themen 4
P Vektor toString? Java Basics - Anfänger-Themen 2
S valueOf() vs. toString() Verwendung??? Java Basics - Anfänger-Themen 13
G Frage zur toString ? Java Basics - Anfänger-Themen 4
L .toString wieder rückgängig machen Java Basics - Anfänger-Themen 7
H Was ist toString ??? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben