dlaczego ten kod java nie działa?

głosy
0

Mam ten fragment kodu

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

Kiedy wywołać insertfunkcję jak insert(5); insert(8);to alwaty drukuje root is null.

jaki jest problem??

Utwórz 17/01/2010 o 15:31
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
8

Twój problem jest to, że rozmienna wewnątrz insertmetody jest po prostu kopią odniesieniu do bst.ro. Co oznacza, że jeśli zresetować do rozmiennej wewnątrz metody, po prostu kopia odniesienia wskaże nowy ro , oryginalnie przeszedł obiekt pozostanie taka sama.

Twoje pytanie jest top 1 parametru Passing FAQ. Ja sam już odpowiedział na to pytanie więcej niż jeden raz. Sprawdź to .

Odpowiedział 17/01/2010 o 15:33
źródło użytkownik

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