![]() |
|
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |||||||
|
Stammbenutzer
Kilobyte
Registriert seit: 25.12.2009
Beiträge: 121
Abgegebene Danke: 7
Erhielt 6 Danke für 6 Beiträge
|
Hallo...
Ich habe einen Graphen, der mehrere Knoten, sogenannte Zentralen, beinhaltet. Jeder Knoten verweist auf ein Kanten-Array. Jede Kante hat zwei Knoten, "start" und "end". Wenn ich mit einem Knoten eine Kante nehme und deren Ende bestimmen will, muss man dies über die Methode
Als Beispiel mal die Methode isNeighbourOf(Knoten neighbour) aus der Klasse Knoten:
Wenn man nun einen 'random' Pfad von einem zu einem anderen bestimmten Knoten definieren möchte, ackert er sich von einem Nachbarknoten zum nächsten Nachbarknoten, bis er eben zum Ziel ankommt und man kriegt die Knoten, die passiert wurden, zurück... Als 'Feature' ist eingebaut, dass man einen Knoten niemals zweimal passieren kann, das heißt, er checkt den ersten Nachbarn und guckt in einer vorgegebenen Liste, ob dieser Nachbar schon mal passiert wurde, wenn nein, dann gibt er ihm den Befehl weiter, wenn ja, selber Vorgang mit zweitem Nachbarn usw. usf. Nun zum Problem: Ich habe eine GraphDemo erstellt und wollte schauen, ob so weit alles funzt, zu meiner Überraschung hat sich herausgestellt, dass es dies nicht tut... Und zwar habe ich verschiedene Zentralen erstellt, die danach miteinander verknüpft, und die Methode 'getRandomPath' von irgendeinem Knoten zu einem anderen aufgegeben. Start und Ende hat er gut ermittelt, als er dann bei Start losging, hat sein erster Nachfolger (über links[i].getEnd(this)) den Befehl erhalten, weiterzumachen. Beim zweiten Knoten ereignet sich allerdings ein unerklärliches Phänomen: über den Befehl getEnd(this) wird scheinbar er selbst zurückgegeben. Beim Debuggen ist aber alles perfekt! Er markiert die Stelle 'return start (start = Nachbar von Knoten 2);' und gibt somit den eigentlichen Nachbarn zurück, wenn er wieder zum Knoten springt, wird das zurückgegebene als er selbst erkannt und es würde in einer Endlosschleife ausarten, wäre mein 'Feature' mit Einmalpassieren nicht da... Also Fazit: Knoten 1 > läuft alles prima, er geht zu Knoten 2. Knoten 2 > läuft nicht prima, er geht zu sich selbst. > Da Knoten 2 bei getEnd(this) scheinbar sich selber zurückgibt, obwohl er das eigentlich nicht tut, aber irgendwie auch doch, wird eine Endlosschleife verhindert, weil ja das vermeintliche Ende von Knoten 2 (Knoten 2 selbst) bereits passiert wurde. > Vollkommener Schwachsinn oder hab ich nen fatalen Fehler? Code:
Danke im Voraus, sorry für das viele Geschreibe, will nicht, dass nachher noch Fragen auftauchen |
||||||
|
|
|
| #2 (permalink) | |||
|
Stammbenutzer
CD-R 80
Registriert seit: 07.01.2007
Beiträge: 9.104
Abgegebene Danke: 0
Erhielt 260 Danke für 252 Beiträge
|
Ja, das Problem bei solchen Fragen ist, dass man als Außenstehender noch weniger weiß, wo der Fehler liegen könnte - und dass es, wenn man es jetzt testweise mal selbst hinschreiben würde, funktionieren würde
![]() Was sagt er denn so bei
Sicher, dass dort mit == verglichen werden muss, und nicht mit .equals(...) ? |
||
|
|
|
| #3 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 25.12.2009
Beiträge: 121
Abgegebene Danke: 7
Erhielt 6 Danke für 6 Beiträge
|
LOOOOOOOOOOOL
xDD sooo dumm... ich bin wirklich dumm... tut mir leid... tut mir echt sehr leid... es muss return this.start heißen, und nicht start... So ein dummer Leichtsinnsfehler... Und ich habe schon an meiner Intelligenz gezweifelt (jetzt weiß ich wenigstens, dass ich kaum welche besitze) so kommt man durcheinander, wenn man dauernd selbe variablen in methoden wie in attributen verwendet <.< danke trotzdem marco für die bemühung :p das problem lag nicht an ==, schließlich ging ja beim debuggen alles... aber er hat start von der methode und nicht start des objekts zurückgegeben... mit freundlichen grüßen |
|
|
|
| #5 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 10.11.2005
Beiträge: 150
Abgegebene Danke: 0
Erhielt 14 Danke für 14 Beiträge
|
Ja, da ist dann die Frage, ob es so sinnvoll ist einen Parameternamen gleich einem Variablennamen zu wählen wenn man ihn nicht direkt diesem zuweisen will (ala Setter).
|
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Variable Übernimmt den Wert nicht | Miladriel | Java Basics - Anfänger-Themen | 22 | 27.08.2009 14:44 |
| random mit tendenz? | Java Basics - Anfänger-Themen | 8 | 12.11.2008 19:53 | |
| Frage zum heiss geliebten Thema MVC | daNny | Java Basics - Anfänger-Themen | 24 | 11.03.2008 14:37 |
| invokeLater wird doch immer ausgeführt, oder? | spacegaier | Allgemeine Java-Themen | 8 | 10.09.2007 23:03 |
| Warum erstellt und liesst er nicht die Objekte? | Lalle84 | Java Basics - Anfänger-Themen | 9 | 15.04.2007 08:19 |