proč tento java kód nefunguje?

hlasů
0

Mám tento fragment kódu

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);
  }
}

Když jsem volat insertfunkci jako insert(5); insert(8);to alwaty tiskne root is null.

Co je za problém??

Položena 17/01/2010 v 15:31
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
8

Váš problém je, že roproměnná uvnitř insertmetody je jen kopie odkazu na bst.ro. To znamená, že pokud jste znovu na roproměnné uvnitř metody, jen kopie odkazu bude okamžiku je nový ro , bude původně prošel objekt zůstane stejná.

Vaše otázka je vrchol 1 předávání parametrů FAQ. Sám jsem již odpověděl na tuto otázku více než jednou. Podívat se na to .

Odpovězeno 17/01/2010 v 15:33
zdroj uživatelem

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