为什么java将字符打印为整数?

wmvff8tz  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(298)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

三天前关门了。
改进这个问题
我正在编写一个基本的java代码来对二叉树进行有序遍历。

void inorder()
    {
        Stack<NodeT> stack = new Stack<>();

        NodeT current = this.root;

        while(!(current == null && stack.empty()))
        {
            if(current == null)
            {
                current = stack.peek().getRight();
                System.out.print((char)stack.pop().getData());//HERE
            }
            else
            {
                stack.push(current);
                current = current.getLeft();
            }
        }
        System.out.println();
    }

为什么我要把它打成字符?从堆栈中弹出的项是树的一个节点,在我调用的同一行中 getData() 打印字符。我想它正在打印ascii值。
编辑:

class NodeT
{
    private NodeT left;
    private NodeT right;
    private char data;

    NodeT()
    {
        this.left = null;
        this.right = null;
        this.data = '@';
    }

    NodeT getLeft()
    {
        return this.left;
    }

    NodeT getRight()
    {
        return this.right;
    }

    int getData()
    {
        return this.data;
    }

    void setLeft(NodeT ref)
    {
        this.left = ref;
    }

    void setRight(NodeT ref)
    {
        this.right = ref;
    }

    void setData(char element)
    {
        this.data = element;
    }
}
dxxyhpgq

dxxyhpgq1#

public class NodeT
{
    private int val;
    NodeT left;
    NodeT right;

    public NodeT(int val)
    {
        this.val = val;
    }

    public void setData(int val)
    {
        this.val = val;
    }
    public int getData()
    {
        return this.val;
    }

    //however you defined getRight, and getLeft
}

void inorder()
{
    Stack<NodeT> stack = new Stack<>();

    NodeT current = this.root;

    while(!(current == null && stack.empty()))
    {
        if(current == null)
        {
            current = stack.peek().getRight();
            System.out.print(stack.pop().getData());//HERE
        }
        else
        {
            stack.push(current);
            current = current.getLeft();
        }
    }
    System.out.println();
}

上面的方法是可行的,因为在nodet类的getter中,它的返回类型是int。

相关问题