Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
11.4 swap
Hey,
Ich habe ein kleines Problem bei der swap Methode. Ich vertausche einfach das aktuelle Node mit dem übergebenen via Hilfsvariable, so wie man das in der siebten Klasse in Info lernt.
Pseudocode wäre
Node1=aktuelles Node;
Hilfsnode=übergebenes Node;
übergebenesNode=Node1;
Node1=Hilfsnode;
habe ich irgendwas übersehen oder warum will der das nicht?
hier der Error Trace aus JUnit
java.lang.AssertionError: swap 2 and 5 expected:<2> but was:<5>
[…]
at NodePublicTest.testSwap(NodePublicTest.java:140)
[…]
EDIT:
So, bisschen rumprobiert, jetzt kommt der Test bis Zeile 147, dann steht im Trace so ein kryptisches Zeug womit ich nichts anfangenkann;
java.lang.AssertionError: structure after swap left parent expected:Node@58da0411 but was:
[…]
at NodePublicTest.testSwap(NodePublicTest.java:147)
[…]
Eigentlich sind die Tests ja dazu da, uns zu zeigen, wo wir was falsch gemacht haben. Schön wär’s halt, wenn man auch wüsste was JUnit da von einem will…
Wenn du das so implementierst, musst du die Zeiger von den Eltern auf die Kinder und umgekehrt richtig setzen. Viel einfacher wäre das Vertauschen vom Inhalt der Knoten.
Habe ich das “Werte” in der Aufgabenstellung also als Node.value zu verstehen oder wie?
Ja, sowie du das (wahrscheinlich) auch in der c) interpretiert hast. swap vertauscht lediglich die Werte.
Du kannst deiner Node-Klasse mit der Methode
public String toString(){ return this.value.toString(); }
ergänzen. Dann erhälst du nicht den kryptischen Ausdruck Node@58da0411, sondern den Wert des Knotens.
Wichtig: Die Methode solltest du am Ende wieder löschen oder auskommentieren, da sie public ist.
Hm, also ich steige nicht dahinter, warum ich an sowas trivialem scheiter… naja, alle anderen Tests laufen, von daher
java.lang.AssertionError: structure after swap left parent expected:<Node@58da0411> but was:<null>
schaut fuer mich aus, als wuerde etwas mit deinem parent-Attribut nicht stimmen.
Stimmen deine Konstruktoren?