Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ?

TomatenBrot447

Mitglied
Hallo ich sitze ca. 2 Stunden an einer Aufgabe (bin Java Anfänger) und komme einfach nicht weiter. Also folgendes:
Die Ausgabe in der Konsole sieht dann folgendermaßen aus:

Polygon mit 3 Punkten: P0 = (50,50) P1 = (150,100) P2 = (100,150)

Aufgabe:
Fügen Sie Ihrer Klasse MeinPolygon eine Methode toString (Vgl.
Abbildung 5) hinzu. Diese soll einen String als Rückgabe liefern. Dieser
String soll genauso aufgebaut sein, wie die Ausgabe in der Methode zeige.

Wie mache ich das jetzt? Ich sitze schon 2 Stunden da dran. Meine Lösung :
Java:
public String toString(){
  for (int i=0;i<npoints;i++){
    this.str="P"+i+ " = ("+xpoints[i]+", "+ypoints[i]+")  ";
  }
  return str;
}
Aber in der Ausgabe wird immer nur der Letzte Punkt ausgegeben (was auch logisch ist): Die Ausgabe sieht dann so aus :

Meins: P2 = (100, 150)

Frage: Aber wo sind PO und P1 geblieben? Ich denke das schon mein Lösungsansatz falsch ist. Bitte um eure Hilfe
 
Zuletzt bearbeitet von einem Moderator:
Du ersetzt deinen str immer wieder. Was du benötigst ist die Konkatenation von Strings str += ...;.
Java:
public String toString(){
  String str = "";
  for (int i=0;i<npoints;i++){
    str += "P"+i+ " = ("+xpoints[i]+", "+ypoints[i]+")  ";
  }
  return str;
}
Noch besser wäre, wenn du einen StringBuilder verwenden würdest.
Java:
@Override
public String toString() {
  StringBuilder builder = new StringBuilder();
  for(int i = 0; i < npoints; i++) {
    if(i != 0) builder.append(' ');
    builder.append("P" + i + " = (" + xpoints[i] + ", " + ypoints[i] + ")");
  }
  return builder.toString();
}
 

Zurück
Oben