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

TomatenBrot447

Mitglied
Ich habe eine Methode in meiner Klasse MeinPolygon die folgendermaßen implementiert ist.:

public void zeige(){

for (int i=0;i<npoints;i++){
System.out.print("P"+i+ " = ("+xpoints+", "+ypoints+") ");

}
}
Die Ausgabe in der Konsole sieht dann folgendermaßen aus:

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 :

public String toString(){

for (int i=0;i<npoints;i++){
this.str="P"+i+ " = ("+xpoints+", "+ypoints+") ";

}
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
 
Am einfachsten wäre, wenn du innerhalb der #toString() eine String Variable erstellst, wo du in der Schleife den Punkt anfügst (wenn du schon eine hast: Statt "this.str =" machst du "this.str +=") - so, wie du es jetzt machst, überschreibst du jeden Schleifendurchlauf den Inhalt, sodass nur der letzte Punkt übrig bleibt.
Java:
//in der Schleife
this.str += ....; // so fügst du dem String str etwas neues hinten dran.

Also summa summarum: Es fehlt nur ein + 😀
 
f10, deine Lösung gibt nicht alle Punkte aus sondern nur den ersten.
Wie Cromewell gerade geschrieben hat, darfst du den Wert von "str" nicht immer überschreiben, sondern musst die Folgestrings mit einem "+" anhängen (siehe ebenfalls Post von Cromewell)
 
f10, deine Lösung gibt nicht alle Punkte aus sondern nur den ersten.
Wie Cromewell gerade geschrieben hat, darfst du den Wert von "str" nicht immer überschreiben, sondern musst die Folgestrings mit einem "+" anhängen (siehe ebenfalls Post von Cromewell)

Ja stimmt, ich habe die Frage falsch verstanden und die Schleife nicht bedacht. In Codetags wäre es vielleicht leichter zu lesen gewesen. Aber gut, mein Fehler, sorry. Meine Vorposter haben natürlich Recht.
 
Danke an euch alle , ich habe die Lösung nun implementiert und das Richtige kommt heraus.
Hier nun die richtige Lösung (Danke an alle):

private String str="";
public String toString(){


for (int i=0;i<npoints;i++)
{
this.str += "P"+i+ " = ("+xpoints+", "+ypoints+") ";
}

return str;
}
 
Das Symbol links neben der Diskette, dann auf Code 😉
Abmelden: Nur über deinen Namen hovern (oben neben Unterhaltungen), kommt ein Menü in dem unten rechts "Abmelden" steht.
 

Zurück
Oben