检查Null进入无限循环

时间:2013-05-02 22:48:55

标签: java object null nullpointerexception structure

我的数据结构如下:

[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) {}

但它对我不起作用。它根本没有尽可能向右移动。

2 个答案:

答案 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();
    }