我试图寻找类似的问题,但无济于事。如果我从"!="更改操作员到" ==",它打印" {}"。此外,如果我只是打印出变量I' m testing(current.myData),它引用的整数将按预期打印出来。但是,每次我测试" current.myData!= null"它抛出一个空指针异常并退出。非常感谢任何帮助!
public class LinkedQueue<E> implements QueueADT<E> {
@Override
public String toString() {
...
String exitVal = null;
final StringBuffer sb = new StringBuffer();
if (myFront.myData == null) {
exitVal = "{ }";
} else {
Node<E> current = myFront.myNext;
sb.append('{');
sb.append(myFront.myData);
while (current.myData != null) {
sb.append(", ");
sb.append(String.valueOf(current.myData));
current = current.myNext;
}
sb.append('}');
exitVal = sb.toString();
}
return exitVal;
}
答案 0 :(得分:1)
在循环体中,current = current.myNext;
没有对myNext
null
进行测试,因此第一次(或后续)循环迭代current
必须为{{1} }}。你可以改变
null
类似
while (current.myData != null) {