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);常に出力されroot is nullます。

どうしたの??

4

1 に答える 1

8

あなたの問題は、メソッドro内の変数がinsertへの参照のコピーにすぎないことbst.roです。つまり、メソッド内の変数をリセットすると、参照のコピーだけがnewを指し、最初に渡されたオブジェクトは同じままになります。ro ro

あなたの質問は Parameter Passing FAQ のトップ 1 です。私自身、すでにこの質問に何度も答えています。それをチェックしてください

于 2010-01-17T14:33:59.410 に答える