2010-01-17 11 views
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(5); insert(8);처럼 insert 함수를 호출하면 alwaty가 root is null을 인쇄합니다.

뭐죠 문제가 ??

+1

다음에 게시물을 읽을 수 있는지 확인하십시오. 이 코드는 끔찍한 엉망이었고 게시 한 이후로는 구문 강조 표시조차도 인용하지 않았습니다. –

+3

코드를 더 잘 들여 쓰기를 배우십시오! –

+2

'insert'는 함수가 아니므로 메소드입니다. – voyager

답변

8

insert 메서드 내의 변수가 bst.ro의 복사본 일뿐입니다. 즉, 변수를 메서드 내부에 다시 ​​설정하면 참조 사본에 이 새ro을 가리키며 원래 전달 된 개체는 그대로 유지됩니다.

귀하의 질문은 매개 변수 전달 FAQ의 상위 1 개입니다. 나는 이미이 질문에 한 번 이상 대답했다. Check it out.

관련 문제