簡體   English   中英

為什么這個Java代碼不起作用?

[英]why this java code does not work?

我有這個代碼片段

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(5); insert(8);類的insert函數時insert(5); insert(8); insert(5); insert(8); 它始終輸出root is null

有什么問題??

您的問題是insert方法內部的ro變量只是對bst.ro引用的副本。 這意味着,如果您在方法內部重置 ro變量,則僅引用的副本將指向新的 ro ,原始傳遞的對象將保持不變。

您的問題是“參數傳遞常見問題”的前1個問題。 我本人已經多次回答了這個問題。 看看吧

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM