почему этот 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);
он всегда печатает root is null
.
в чем проблема??
Решение
Ваша проблема в том, что ro
переменная внутри insert
метод — это просто копия ссылки на bst.ro
.Это означает, что если вы перезагрузить тот ro
переменная внутри метода, просто копия ссылки будет указывать на новый ro
, первоначально переданный объект останется прежним.
Ваш вопрос входит в число первых часто задаваемых вопросов по передаче параметров.Я сам уже не раз отвечал на этот вопрос. Проверьте это.
Не связан с StackOverflow