因此,以下方法中的node.getValue()
会返回E
或通用数据类型。
public String toString() {
StringBuilder linkedQueueAsString = new StringBuilder();
linkedQueueAsString.append("< ");
for (Link<E> node = this.front.getNextNode(); node != null; node = node.getNextNode())
{
linkedQueueAsString.append(node.getValue()); // <=== Not working correctly
linkedQueueAsString.append(" ");
}
linkedQueueAsString.append(">");
return linkedQueueAsString.toString();
}
当我测试它时,我的测试失败了:
public void setUp() {
this.queue1 = new LinkedQueue<Integer>();
this.queue2 = new LinkedQueue<Integer>();
}
public void test_enqueue3IntegersAndThenDequeueThem() {
this.queue2.enqueue(1);
this.queue2.enqueue(2);
this.queue2.enqueue(3);
assertEquals(3, this.queue2.length());
assertEquals("< 1 2 3 >", this.queue2.toString()); // <= ERROR since none of the numbers printed out
}
您可以看到我的个人实施链接队列here。
我该如何解决这个问题?谢谢!
答案 0 :(得分:2)
对我来说,问题出在这一行:
for (Link<E> node = this.front.getNextNode(); node != null; node = node.getNextNode()) {
由于你两次调用“getNextNode()”,你会错过一个元素而你的assertEquals将不匹配。