لماذا لا يعمل رمز Java هذا؟
-
21-09-2019 - |
سؤال
لدي جزء الرمز هذا
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
.
ما هي المشكلة؟؟
المحلول
مشكلتك هي ذلك ro
متغير داخل insert
الطريقة هي مجرد نسخة من الإشارة إلى bst.ro
. بمعنى أنه إذا كنت إعادة تعيين ال ro
متغير داخل الطريقة ، فقط نسخة من المرجع سوف تشير إلى الجديد ro
, ، سيبقى الكائن الذي تم تمريره في الأصل كما هو.
سؤالك هو أعلى 1 من المعلمة التي تمرير الأسئلة الشائعة. أنا نفسي أجبت بالفعل على هذا السؤال أكثر من مرة. تحقق من ذلك.
لا تنتمي إلى StackOverflow