【发布时间】:2018-07-13 01:24:02
【问题描述】:
我创建了一个双端队列,我想打印出队列的内容。我创建了一个 toString 方法,但是当我向左侧添加一个元素时,它会覆盖当前的前(左)元素。 例如
System.out.println(myDeq);
myDeq.addFront(7);
myDeq.addRight(12);
System.out.println(myDeq);
myDeq.addFront(15);
System.out.println(myDeq);
所以我的输出是
<>
<7,12>
<15,12>
但我想要
<15,7,12>
我的 toString 方法是:
public String toString()
{ StringBuffer sb = new StringBuffer("<");
QCell<T> l = frontCell;
QCell<T> r = backCell;
while (l != null && r != null)
{ sb.append(l.data +"," + r.data + ",");
l = l.next;
r = r.next;
}
return(sb+">");
}
我添加到左边的代码是: @Override
public void addFront(T x) {
QCell<T> theCell= new QCell<T>(x);
if (frontCell == null)
frontCell = backCell = theCell;
else {
frontCell.next = theCell;
frontCell = theCell;
}
}
我不确定是我的 toString 方法覆盖了它还是我的 addFront 代码不正确。
【问题讨论】:
-
为什么不为您的队列编写单元测试并找出答案?
-
@lance-java 这不是我的 add 方法,我测试过。这是我的 toString 方法,但我不知道为什么它会覆盖。
-
谁写的并不重要。编写一个调用
add()和toString()的单元测试,并做出一些应该为真的断言。继续修复代码,直到测试变为绿色。
标签: java collections queue deque