pourquoi ce code java ne fonctionne pas?

voix
0

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 insertfonction comme insert(5); insert(8);il alwaty imprime root is null.

quel est le problème??

Créé 17/01/2010 à 15:31
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
8

Votre problème est que rovariable à l' intérieur de la insertméthode est juste une copie de la référence à bst.ro. Ce qui signifie que si vous réinitialiser la rovariable à l' intérieur de la méthode, juste la copie de la référence pointera le 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 .

Créé 17/01/2010 à 15:33
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more