почему это Java-код не работает?

голоса
0

У меня есть этот фрагмент кода

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

Когда я вызываю insertфункцию , как insert(5); insert(8);ему alwaty отпечатки root is null.

в чем проблема??

Задан 17/01/2010 в 15:31
источник пользователем
На других языках...                            


1 ответов

голоса
8

Ваша проблема заключается в том , что roпеременная внутри insertметода является просто копия ссылки на bst.ro. Это означает , что если вы сбросить с roпеременной внутри метода, только копия справки будет указывать новый ro , первоначально Переданный объект останется таким же.

Ваш вопрос является верхней 1 передачи параметров FAQ. Я сам уже ответил на этот вопрос несколько раз. Проверьте это .

Ответил 17/01/2010 в 15:33
источник пользователем

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