我的数据结构如下:
[object] - > [对象] - > [对象]
每个对象都有一个指向另一个对象的右指针。
while (currentParcel.getRight() != null) {
currentParcel = currentParcel.getRight();
}
此代码进入无限循环。
按照我的逻辑,它应尽可能正确,并且只有当它达到null时,currentParcel对象应该是指向null的最后一个对象(没有右边的对象)。
如何处理无限循环?
我尝试过以下方式写作:
boolean found = false;
try {
while (found == false) {
currentParcel = currentParcel.getRight();
if (currentParcel.getRight() == null)
{
currentParcel.addRight(p);
System.out.println(currentParcel);
found = true;
}
}
}
catch (NullPointerException e) {}
但它对我不起作用。它根本没有尽可能向右移动。
答案 0 :(得分:1)
您的链表结构中有一个循环链接。要调试它,要么使用调试器,要么打印while循环中的对象以查看它们是什么。这样你就会发现问题所在。确保您的对象具有合适的toString()
方法并将其打印在循环内部,以便通过一种方法识别您的循环连接。此外,您不必为此发生“最后一点”,而是您需要的仅仅是存在于某处的循环连接。你最好找到它。
答案 1 :(得分:0)
你的循环是ON,问题出在其他地方,这很好用
Parcel p1 = new Parcel();
Parcel p2 = new Parcel();
Parcel p3 = new Parcel();
p1.setRight(p2);
p2.setRight(p3);
Parcel currentParcel = p1;
while (currentParcel.getRight() != null) {
currentParcel = currentParcel.getRight();
}