0

所以我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

}

你可以在这里看到我个人的 Linked Queue 实现。

我怎样才能解决这个问题?谢谢!

4

1 回答 1

2

对我来说,问题出在这一行:

 for (Link<E> node = this.front.getNextNode(); node != null; node = node.getNextNode()) {

由于您两次调用“getNextNode()”,因此您错过了一个元素并且您的 assertEquals 将不匹配。

于 2013-09-01T23:13:09.573 回答