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:
Code:
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?
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?
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?
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.
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...