Methode springt zwischen returns

DazzleFlash

Mitglied
Heiho,
Ich habe folgendes Problem. Ich möchte einen Trie erzeugen und dazu hab ich mir ne private, rekursive Hilfsmethode geschrieben, die überprüfen soll, ob die Anzahl an "vätern" mit der Länge des übergebenen Strings übereinstimmt. Warum ist in dem Fall eigentlich gar nicht so wichtig. Mein Problem ist nun folgendes.

Java:
private boolean allParentsExist (int length, Node lastNode, int n) {
		if (lastNode.getParent() != null) {
			//call this method again and increase n by 1
			return this.allParentsExist(length, lastNode.getParent(), (n + 1));
		} else {
		        return (n == length);
                }
	}

Wenn ich zum Beispiel einen Eintrag "pete" habe und möchte "peter" hinzufügen, wird irgendwann diese Methode aufgerufen und sollte eigentlich zu dem Schluss kommen, dass es vorerst mal 4 Väter gibt vom anfangs übergebenen lastNode ("e"), nämlich "t", "e", "p" und die Wurzel. Also sollte am Ende n == 4 sein, die Länge beträgt jedoch 5, weil ich will ja "peter" hinzufügen.
Wenn ich das nun im Debug-Modus starte und mir angucke, läuft die Methode bis zur Wurzel, geht dann in den else-Zweig, trifft auf die return-Anweisung, wo stehen müsste 4 == 5, also false, springt dann aber nochmal zum anderen return hoch und setzt n auf 3 und warum es das tut ist mir momentan noch schleierhaft.

Das Ergebnis liefert zwar trotzdem noch false, ich will die Methode aber später wieder aufrufen und dort müsste sie eigentlich true ausgeben, was sie halt nciht tut weil im letzten Moment n noch einmal verändert wird.

Ich hoffe ihr könnt mir helfen ;-)
 

Landei

Top Contributor
Das sollt eigentlich genau dasselbe tun, ist aber etwas einfacher (und auch einfacher zu debuggen):
(ungetestet)
Java:
private boolean allParentsExist (int length, Node lastNode) {
        if (lastNode.getParent() != null) {
                return this.allParentsExist(length - 1, lastNode.getParent());
        } else {
                return length==0;
        }
}
 

DazzleFlash

Mitglied
Danke für die schnelle Hilfe. So funktioniert alles einwandfrei :)

Weiß dennoch jemand, warum bei der anderen Methode n auf einmal wieder verringert wird?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Debugging springt nicht in Methode - liefert null Frameworks - Spring, Play, Blade, Vaadin & Co 2
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Junit : static MockMvc in @BeforeAll Methode führt zu NullPointer Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand JUnit testen einer private Methode Frameworks - Spring, Play, Blade, Vaadin & Co 5
C Methode, welche ein Feld eines Springers erhält und alle möglichen Züge zurückgibt Frameworks - Spring, Play, Blade, Vaadin & Co 4
S Spring JPA / Hibernate: save Methode arbeitet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 2
L Spring Jersey Event ausführen bevor die Action Methode ausgeführt wird oder danach Frameworks - Spring, Play, Blade, Vaadin & Co 2
I Spring Security: Login und danach Methode aufrufen. Nur wie?? Frameworks - Spring, Play, Blade, Vaadin & Co 0
S Direkt zur Methode springen die in der Klasse und nicht im Interface implementiert? Frameworks - Spring, Play, Blade, Vaadin & Co 4
C getSelectedRow() springt bei JButton-Auswahl nicht weiter mit Frameworks - Spring, Play, Blade, Vaadin & Co 16
G HILFE Dringend switch case springt nicht raus Frameworks - Spring, Play, Blade, Vaadin & Co 23
L Mauszeiger springt in obere linke Ecke des JDialogs Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Button springt aus Textbox Frameworks - Spring, Play, Blade, Vaadin & Co 2
A Debugger springt in andere Klassen Frameworks - Spring, Play, Blade, Vaadin & Co 14
K Figur Springt nicht Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Zeitmessung springt vorraus und funktioniert nicht! Frameworks - Spring, Play, Blade, Vaadin & Co 4
P Spieler im 2D-Spiel springt herum Frameworks - Spring, Play, Blade, Vaadin & Co 0
G JTable springt (JScrollPane, GridBagLayout) Frameworks - Spring, Play, Blade, Vaadin & Co 1
K TextWatcher springt nicht an Frameworks - Spring, Play, Blade, Vaadin & Co 9
T JTable + JScrollePane Größe "springt" beim resizen des Fensters Frameworks - Spring, Play, Blade, Vaadin & Co 4
engelsteufelin Taschenrechner springt an Start nach falscher Eingabe Frameworks - Spring, Play, Blade, Vaadin & Co 7
W Java Applet aus der Taskleiste springt in Vordergrund Frameworks - Spring, Play, Blade, Vaadin & Co 3
O Progressbar 'springt nicht an' Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Exception springt nicht in den catch- Block Frameworks - Spring, Play, Blade, Vaadin & Co 14
R Programm springt nicht in if Bedingung Frameworks - Spring, Play, Blade, Vaadin & Co 9
C LWUIT: Scrollen der Form springt am Ende Frameworks - Spring, Play, Blade, Vaadin & Co 0
Haave Animation "springt" trotz Wartebefehl Frameworks - Spring, Play, Blade, Vaadin & Co 3
J Eclipse springt nicht mehr an. Frameworks - Spring, Play, Blade, Vaadin & Co 8
nrg Debugger springt immer in Java SE Code Frameworks - Spring, Play, Blade, Vaadin & Co 3
Balbes JComboBox springt af den ersten Wert zurück Frameworks - Spring, Play, Blade, Vaadin & Co 6
Z JList "springt" Frameworks - Spring, Play, Blade, Vaadin & Co 5

Ähnliche Java Themen

Neue Themen


Oben