pourquoi ce code java ne fonctionne pas?
-
21-09-2019 - |
Question
J'ai ce fragment de code
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);
}
}
Quand j'appelle la fonction insert
comme insert(5); insert(8);
il imprime alwaty root is null
.
Quel est le problème ??
La solution
Votre problème est que variable ro
dans la méthode de insert
est juste une copie de la référence à bst.ro
. Ce qui signifie que si vous reset la variable ro
dans la méthode, juste la copie de la référence pointera nouveau ro
, l'objet à l'origine passé restera le même.
Votre question est le top 1 de passage de paramètres FAQ. Je me suis déjà répondu à cette question plus d'une fois. Check it out .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow