2012-04-11 3 views
2

이 메인 클래스입니다 :인쇄되지 않는 이유는 무엇입니까?

import javax.swing.*; 
class BinarySearchTree { 
private Node root; 

public void main() 
{ 
    int Value = 0; 
    while(Value!= -1) 
    { 
     Value = Integer.parseInt(JOptionPane.showInputDialog("Enter a value")); 
     insert(root, Value); 
    } 
    print(); 
} 

public void insert(Comparable x) 
{ 
    root = insert(root, x); 
} 

public boolean find(Comparable x) 
{ 
    return find(root,x); 
} 

public void print() 
{ 
    print(root); 
} 

@SuppressWarnings("unchecked") 
boolean find(Node tree, Comparable x) 
{ 
    if (tree == null) 
     return false; 

    if (x.compareTo(tree.data) == 0) 
     return true; 

    if (x.compareTo(tree.data) < 0) 
     return find(tree.left, x); 
    else 
     return find(tree.right, x); 
} 

void print(Node tree) 
{ 
    if (tree != null) 
    { 
     print(tree.left); 
     System.out.println(tree.data); 
     print(tree.right); 
    } 
} 

@SuppressWarnings("unchecked") 
Node insert(Node tree, Comparable x) 
{ 
    if (tree == null) 
    { 
     return new Node(x); 
    } 

    if (x.compareTo(tree.data) < 0) 
    { 
     tree.left = insert(tree.left, x); 
     return tree; 
    } 
    else 
    { 
     tree.right = insert(tree.right, x); 
     return tree; 
    } 
} 

}

노드 클래스 :

내가 호출 할 때 결과를 출력하려고
public class Node { 
    public Comparable data; 
    public Node left; 
    public Node right; 

    Node(Comparable newdata) { 
     data = newdata; 
    } 
} 

"인쇄();" void 기본 클래스에서 모든 값을 트리에 삽입 한 후 아무 것도 인쇄하지 않습니다. 개별 메서드를 개별적으로 호출하면 작동하지만, 주 클래스에서 호출하려고하면 그렇지 않습니다. 이런 일이 일어나는 이유는 무엇입니까? 감사합니다.

+7

투표의 여지가 남기십시오 : 검사로 코드의 오류를 찾아내는 낯선 사람에게 생산성을 높이는 것은 좋지 않습니다. 디버거 나 print 문을 사용하여 문제를 확인 (또는 적어도 격리) 한 다음보다 구체적인 질문으로 돌아 가야합니다 (10 줄 [테스트 케이스] (http : /sscce.org)). –

+1

'public void main()'.. 아무런 오류가 없습니까? – vidit

+0

맞습니다. 그리고 어디에서 디버거를 사용할 수 있습니까? – svsav

답변

4

주된 방법이 없기 때문입니다. 기본 방법의 서명을

으로 변경하고 다시 실행하십시오.