因此,以下方法中的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 here实现。

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

最佳答案

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

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


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

关于java - 在toString方法中将Object转换为特定的数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18563785/

10-13 21:27