warum dieser Java-Code nicht funktioniert?
-
21-09-2019 - |
Frage
Ich habe dieses Codefragment
class bst {
public node root=null;
bst() {
root=null;
}
public void insert(int data) {
insert(this.root,data);
}
private void insert(node ro,int data) {
if (ro==null) {
print ("root is null");
ro=new node(data);
} else if (data>ro.data)
insert(ro.right,data);
else
insert(ro.left,data);
}
private void print (String str)
{
System.out.println(str);
}
}
Wenn ich rufe die insert
Funktion wie insert(5); insert(8);
es alwaty druckt root is null
.
Was ist das Problem ??
Lösung
Ihr Problem ist, dass ro
Variable innerhalb der insert
Methode wird nur eine Kopie des Verweises auf bst.ro
. Was bedeutet, dass, wenn Sie Reset die ro
Variable in der Methode, nur die Kopie der Referenz auf das neu markierten Punkt ro
, die ursprünglich übergebene Objekt wird gleich bleiben.
Ihre Frage ist die Besten 1 aus Parameterübergabe FAQ. Ich selbst diese Frage bereits beantwortet mehr als einmal. Check it out .
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow