Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
da bin ich wieder mit neue Probleme. Diesmal würde ich gerne eine Methode schreiben, die ein Objekt 'verlängern' lässt. Zuerst einmal die Main:
Java:
public static void main(String[] args) {
Weg w1 = new Weg(0,0);
Weg w2 = new Weg(1,1);
Weg w3 = new Weg(3,4);
System.out.println(w1.toString());
System.out.println(w2.toString());
w1.verlaengern(w3); // --> Problem
}
Ich erzeuge drei Objekte der Klasse Weg. Danach gebe ich diese aus und wenn ich nun die Methode 'verlängern' aufrufe soll folgendes passieren:
Java:
Weg w1 = (0,0)
Weg w2 = (1,1) angehängt: w1.verlaengern(w2).
Danach gilt w1 =(0,0)−(1,1), er enthält also zwei Punkte und die Punkte sollen ausgegeben werden.
Java:
Hängt man an diesen Weg wiederum den Weg w3 = (3,4) an (w1.verlaengern(w3)), so gilt anschließend w1 = (0,0)−(1,1)−(3,4).
Mein Versuch, welches nicht funktioniert:
Java:
public void verlaengern(Weg w){
String weg = "";
int gesamtWege = getAnzahl(); //Anzahl der erzeugten Objekte
for(int i = 0; i < punkte.length; i++){
weg += punkte[i].toString() + " - ";
weg += w;
}
System.out.print(weg);
}
punkte ist ein Objekt der Klasse Punkte die zwei Variabeln enthält. Einmal den x und y Wert. In Punkte gibt es nur einen Konstruktor und eine toString Methode.
Bei der public void verlaengern Methode. Die Ausgabe ist nicht korrekt. Wenn ich die Methode Verlängern aufrufe wie folgt: w1.verlaengern(w3); Dann müssen W1 - W2 - W3 ausgegeben werden.
punkte ist ein Objekt der Klasse Punkte die zwei Variabeln enthält. Einmal den x und y Wert. In Punkte gibt es nur einen Konstruktor und eine toString Methode.
Bei der public void verlaengern Methode. Die Ausgabe ist nicht korrekt. Wenn ich die Methode Verlängern aufrufe wie folgt: w1.verlaengern(w3); Dann müssen W1 - W2 - W3 ausgegeben werden.
Woher soll die Ausgabe her kommen, du speicherst nirgendwo die Wege. Und gibst auch keine gespeicherten Wege in deiner verlaengern Methode aus. Du konkatenatierst nur die punkte des aktuellen Objektes und den übergebenen Weg.
Vielleicht solltest du uns sagen wie die Aufgabenstellung ist.
Fand dann ein w1.verlaengern(w2); schon statt? Gehen wir davon aus, dass w1 bereits um w2 und w3 verlängert wurde, so muss dann die Ausgabe alle drei Werte hintereinander ausgeben.
Der Teilnehmer in dem von mir verlinkten Link hat ja es fast richtig gemacht. Er hat ein neues Array unter der Berücksichtigung der Erweiterung erstellt, darin alle Werte des alten Arrays untergebracht und anschließend den neuen Wert an das Ende des neuen Arrays hinzugefügt. Und wie ich ebenso dort in die Methode schrieb, bleibt nun die Frage der Existenzberechtigung der zum Zeitpunkt zwei vorhandenen Arrays alt und neu.
Ebenso verlinkte ich zum passenden Kapitel des Buches "Java ist auch eine Insel".
Fand dann ein w1.verlaengern(w2); schon statt? Gehen wir davon aus, dass w1 bereits um w2 und w3 verlängert wurde, so muss dann die Ausgabe alle drei Werte hintereinander ausgeben.
Der Teilnehmer in dem von mir verlinkten Link hat ja es fast richtig gemacht. Er hat ein neues Array unter der Berücksichtigung der Erweiterung erstellt, darin alle Werte des alten Arrays untergebracht und anschließend den neuen Wert an das Ende des neuen Arrays hinzugefügt. Und wie ich ebenso dort in die Methode schrieb, bleibt nun die Frage der Existenzberechtigung der zum Zeitpunkt zwei vorhandenen Arrays alt und neu.
Ebenso verlinkte ich zum passenden Kapitel des Buches "Java ist auch eine Insel".
w1.verlaengern(w2); wird korrekt ausgegeben. Ich werde mal das mit dem Array versuchen. Also wäre es besser ein neues Array zu erzeugen und darin die Werte des alten Arrays zu speichern?
Ein neues Array, in welchem a) das alte Array und b) das neue Element platz finden und ganz wichtig:
als letzte Handlung der Methode sollte man das alte Array mit neuem überschreiben, weil eben das neue Array beim verlassen der Methode stirbt!, und nur das alte Array als Instanzvariable der Klasse weiterhin lebt.
Ein neues Array, in welchem a) das alte Array und b) das neue Element platz finden und ganz wichtig:
als letzte Handlung der Methode sollte man das alte Array mit neuem überschreiben, weil eben das neue Array beim verlassen der Methode stirbt!, und nur das alte Array als Instanzvariable der Klasse weiterhin lebt.