# toString()-Methode



## Vril (18. Dez 2004)

Hallo,
ich habe folgende Aufgabenstellung vorliegen:

Die Klasse PersonMitOrt soll als Attribute einen Namen, einen Vornamen sowie einen Ort (jeweils als String erhalten. Geben Sie einen Konstruktor für diese Klasse sowie eine toString()-Methode an. Der Konstruktor soll alle Attribute auf die ihm übergebenen Werte setzen. Im Beispiel soll das Objekt x den Namen "Meier", den Vornamen "Sepp" und den Ort "Mannheim" haben. Die toString()-Methode soll ihr Ergebnis mit Hilfe eines StringBuffer-Objekts zusammenbauen.
PersonMitOrt x = new PersonMitOrt ("Meier", "Sepp", "Mannheim");

Das habe ich dazu dann mal geschrieben:


```
public class PersonMitOrt {
	
	//Attribute Name, Vorname und Ort als String
	private String name;
	private String vorname;
	private String ort;
	
	
	//Konstruktor
	
	public PersonMitOrt(String name, String vorname, String ort) {
		
		this.name = name;
		this.vorname = vorname;
		this.ort = ort;
	}
	
	//toString()-Methode
	{
		public String toString() {
			return name, vorname, ort;
		}
	}
	
	//Methode
	public void drucke() {
		System.out.println		(" Name " + name);
		System.out.println		(" Vorname " + vorname);
		System.out.println		(" Ort " + ort);
	}
	
	//main
	public static void main (String[] args) {
		PersonMitOrt x = new PersonMitOrt ("Meier", "Sepp", "Mannheim");
		x.drucke();
	}
}
```

Beim compilieren gibt es aber bei der toString()-Methode Probleme, wahrscheinlich weil ich keinen StringBuffer eingesetzt habe bzw. nicht weiss wie ich den einbaue damit das ganze funktioniert. Kann mir jemand weiterhelfen?


----------



## Beni (18. Dez 2004)

Du hast zuviel Klammern gemacht. Streich einfach mal die Klammern { und } vor und nach der toString-Methode.


----------



## Wildcard (18. Dez 2004)

Du wolltest das wohl so machen?


```
public String toString() 
{ 
         return (name + "," + vorname +"," + ort);
 }
```


----------



## Vril (18. Dez 2004)

Danke! Die Antworten von Beni und Wildcard haben mir weitergeholfen.
Jetzt wollte ich noch fragen ob jemand weiss was es mit der Aufgabenstellung "...Die toString()-Methode soll ihr Ergebnis mit Hilfe eines StringBuffer-Objekts zusammenbauen." auf sich hat?


----------



## Wildcard (18. Dez 2004)

Anstatt die Strings mit '+' aneinanderzuhängen kannst du auch einen StringBuffer verwenden(ist performanter) .

```
StringBuffer buffer = new StringBuffer();
buffer.append("blupp");
return buffer.toString();
```


----------



## Vril (18. Dez 2004)

Danke, so klappt es auch!
Jetzt habe ich aber mal versucht die ganze toString-Methode weg zu lassen und zumindest die Ausgabe ist die gleiche. An was liegt das, kann man sich die toString-Methode wirklich sparen, bzw. wollte der Aufgabensteller damit nur testen ob man es schafft so etwas mit einzubauen?


----------



## Wildcard (18. Dez 2004)

Du verwendest die toString() Methode überhaupt nicht.
Du rufst drucke() auf.
Standartmäßig liefert die toString() Methode Objektname+Hashcode.
Wenn man etwas anderes anzeigen will muss sie überschrieben werden.


----------



## Vril (18. Dez 2004)

Hm, also sollte ich hinsichtlich der Aufgabenstellung drucke() weglassen. Wahrscheinlich dann auch meine Methode mit dem ganzen System.out.println... Aber was muß ich dann weiter machen damit das ganze funktioniert? Bzw. den String überschreiben damit name, vorname, ort ausgegeben wird? Bin jetzt etwas ratlos...


----------



## bygones (18. Dez 2004)

drucken kannst du für diese Aufgabenstellung streichen...

du sollst ja eine Klasse schreiben und in ihr eine toString Methode.

wenn du die toString methode schreibst wie schon vorgeschlagen passt doch alles


----------



## Vril (18. Dez 2004)

Ok, danke!
Hab ein drucken jetzt mit: System.out.println(x); hinbekommen.


----------

