warum dieser Java-Code nicht funktioniert?

stimmen
0

Ich habe dieses Code-Fragment

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

Wenn ich rufe Sie die insertFunktion wie insert(5); insert(8);es alwaty druckt root is null.

was ist das Problem??

Veröffentlicht am 17/01/2010 um 15:31
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
8

Ihr Problem ist , dass roVariable in der insertMethode ist nur eine Kopie des Verweises auf bst.ro. Was bedeutet , dass , wenn Sie Reset die roVariable in der Methode, nur die Kopie der Referenz wird den Punkt neu ro , das ursprünglich übergebene Objekt wird das gleiche bleiben.

Ihre Frage ist die Besten 1 aus Parameterübergabe FAQ. Ich selbst schon beantwortet diese Frage mehr als einmal. Überprüfen Sie es heraus .

Beantwortet am 17/01/2010 um 15:33
quelle vom benutzer

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