Java 显示堆栈内容时出现问题

Java 显示堆栈内容时出现问题,java,methods,interface,stack,Java,Methods,Interface,Stack,我有一个堆栈接口和一个实现接口中方法的类(push、pop、isEmpty和isFull) 我无法显示堆栈的内容。这是我的主课 StackInterface si = new MyStack(); System.out.println("Stack is empty: "+si.isEmpty()); si.push("Hello"); si.push("Adam"); si.push("Horrigan"); si.isEmpty();

我有一个堆栈接口和一个实现接口中方法的类(
push
pop
isEmpty
isFull

我无法显示堆栈的内容。这是我的主课

    StackInterface si = new MyStack();
    System.out.println("Stack is empty: "+si.isEmpty());

    si.push("Hello");
    si.push("Adam");
    si.push("Horrigan");
    si.isEmpty();
    si.pop();
    si.isFull();

    System.out.println(si);
输出为:

Stack is empty: true
stack.MyStack@15db9742
我想知道,为什么堆栈的内容不能输出

编辑,这里是MyStack类

public class MyStack implements StackInterface {

    public ArrayList<String> theStack;

    public MyStack() {
        theStack = new ArrayList<String>();
    }

    public boolean isEmpty() {
        return theStack.isEmpty();
    }

    public boolean isFull() {
        return false;
    }

    public void push(Object newItem) {
        theStack.add((String) newItem);
    }

    public Object pop() {
        if (!(theStack.isEmpty())) {
            return theStack.remove(0);
        } else {
            return null;
        }
    }

}
公共类MyStack实现StackInterface{
公共阵列列表;
公共MyStack(){
theStack=newarraylist();
}
公共布尔值为空(){
返回stack.isEmpty();
}
公共布尔值isFull(){
返回false;
}
公共无效推送(对象newItem){
添加((字符串)newItem);
}
公共对象pop(){
如果(!(theStack.isEmpty()){
返回粘胶。移除(0);
}否则{
返回null;
}
}
}

您应该在
MyStack
类中重写
toString
,以便按您的意愿显示它<代码>MyStack@15db9742是
对象的
toString
的默认实现将返回的内容

例如:

@Override
public String toString ()
{
    return theStack.toString();
}

您应该重写
MyStack
类中的
toString
,以便按您的意愿显示它<代码>MyStack@15db9742
对象的
toString
的默认实现将返回的内容

例如:

@Override
public String toString ()
{
    return theStack.toString();
}

您应该重写
MyStack
类中的
toString
,以便按您的意愿显示它<代码>MyStack@15db9742
对象的
toString
的默认实现将返回的内容

例如:

@Override
public String toString ()
{
    return theStack.toString();
}

您应该重写
MyStack
类中的
toString
,以便按您的意愿显示它<代码>MyStack@15db9742
对象的
toString
的默认实现将返回的内容

例如:

@Override
public String toString ()
{
    return theStack.toString();
}

通过调用
System.out.println(si)
间接调用堆栈的
toString()
方法。这个方法可能没有被Stack类覆盖,这就是调用Object的
toString
方法的原因。这只是打印对象的类和地址(
stack)。MyStack@15db9742


解决方案是覆盖
toString
方法,并通过调用
System.out.println(si)
间接调用堆栈的
toString()
方法来实现返回所需的字符串。

。这个方法可能没有被Stack类覆盖,这就是调用Object的
toString
方法的原因。这只是打印对象的类和地址(
stack)。MyStack@15db9742


解决方案是覆盖
toString
方法,并通过调用
System.out.println(si)
间接调用堆栈的
toString()
方法来实现返回所需的字符串。

。这个方法可能没有被Stack类覆盖,这就是调用Object的
toString
方法的原因。这只是打印对象的类和地址(
stack)。MyStack@15db9742


解决方案是覆盖
toString
方法,并通过调用
System.out.println(si)
间接调用堆栈的
toString()
方法来实现返回所需的字符串。

。这个方法可能没有被Stack类覆盖,这就是调用Object的
toString
方法的原因。这只是打印对象的类和地址(
stack)。MyStack@15db9742


解决方案是覆盖
toString
方法,并进行适当的实现以返回所需的字符串。

这是什么意思?ArrayList的类型为String。@AdamHorrigan什么ArrayList?我在你发布的代码中没有看到任何ArrayList。@AdamHorrigan,我明白了。我用一个可能的toString实现更新了我的答案。你是什么意思?ArrayList的类型为String。@AdamHorrigan什么ArrayList?我在你发布的代码中没有看到任何ArrayList。@AdamHorrigan,我明白了。我用一个可能的toString实现更新了我的答案。你是什么意思?ArrayList的类型为String。@AdamHorrigan什么ArrayList?我在你发布的代码中没有看到任何ArrayList。@AdamHorrigan,我明白了。我用一个可能的toString实现更新了我的答案。你是什么意思?ArrayList的类型为String。@AdamHorrigan什么ArrayList?我在你发布的代码中没有看到任何ArrayList。@AdamHorrigan,我明白了。我用一个可能的toString实现更新了我的答案。