java程序打印奇怪的十六进制输出

时间:2014-04-18 03:49:35

标签: java println

好的我正在尝试编写二进制搜索树的程序。一切都看起来不错,除了我的程序继续打印这个而不仅仅是我的整数遍历遍历。我试图只是在主方法中打印并获得相同的东西?

这是我的代码:

public class bst {
    Node root;

    public Node getRoot(){
        return root;
    }

    public bst(){
        root=null;
    }

    //method addNode
    public void insert(int key){

        Node newNode= new Node(key);//initialize Node

        if(root==null){

            root=newNode;

        }else{
        Node focusNode=root;        
        Node insNode=root;

        while(insNode!=null){
            focusNode=insNode;

            if(key<focusNode.getKey()){
                insNode=insNode.getLeft();
            }
            else{
                insNode=insNode.getRight();
            }
        }

        if(key<focusNode.getKey()){
            focusNode.setLeft(newNode);
        }
        else{
            focusNode.setRight(newNode);
            }       
        }
    }


    public void inOrder(Node focusNode){

        if (focusNode !=null){

            inOrder(focusNode.leftChild);

            System.out.println(focusNode);

            inOrder(focusNode.rightChild);

        }
    }


//Node class
    class Node{

        int key;        
        Node leftChild;
        Node rightChild;

        //Node constructor
        Node(int key){
            this.key=key;
            leftChild=null;
            rightChild=null;
            }
        public void setLeft(Node left){
            this.leftChild=left;            
        }
        public void setRight(Node right){
            this.rightChild=right;      
        }
        public Node getLeft(){return leftChild;}
        public Node getRight(){return rightChild;}
        public void setKey(int k){this.key=k;}
        public int getKey(){return key;}
        public void print(){
            System.out.println(getKey());
        }
        }


    public static void main(String[] args){

        bst theTree= new bst();

        theTree.insert(30);
        theTree.insert(60);
        theTree.insert(50);
        theTree.insert(70);

        theTree.inOrder(theTree.getRoot());


    }

}

2 个答案:

答案 0 :(得分:0)

inOrder方法中,您可以:

System.out.println(focusNode);

您正在直接打印focusNode,因此,除非您的Node类覆盖默认的toString方法,否则您只会看到对象的哈希码(有关详细信息,请参阅this question如果你感兴趣)。你可能想要像

这样的东西
System.out.println(focusNode.getKey());

或者只是使用您编写的print方法。

答案 1 :(得分:0)

看起来你正在尝试打印实际的Node,它只是该节点的内存地址。如果要打印整数,则应将密钥打印到节点。

print(node.getKey());