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实现更新了我的答案。