因此,以下方法中的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/