2010-01-17 6 views
0

Je possède ce fragment de codepourquoi ce code java ne fonctionne pas?

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 alwaty imprime root is null.

quel est le problème ??

+1

La prochaine fois, s'il vous plaît assurez-vous que votre message est lisible. Ce code était un désordre horrible et puisque vous avez posté est comme une citation que vous n'avez même pas eu la coloration syntaxique. –

+3

Vous devriez apprendre à mieux indenter votre code! –

+2

'insert' n'est pas une fonction, c'est une méthode. – voyager

Répondre

8

Votre problème est que ro variable à l'intérieur de la méthode insert est juste une copie de la référence à bst.ro. Cela signifie que si vous réinitialiser la variable ro à l'intérieur de la méthode, juste la copie de la référence pointera le nouveauro, l'objet initialement transmis restera le même.

Votre question est la première de la FAQ sur la transmission de paramètres. J'ai moi-même déjà répondu à cette question plus d'une fois. Check it out.

Questions connexes