-1

次のようなデータ構造があります。

[オブジェクト] -> [オブジェクト] -> [オブジェクト]

各オブジェクトには、別のオブジェクトへの正しいポインターがあります。

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

しかし、それは私にはうまくいきませんでした。できるだけ右に移動しないだけです。

4

2 に答える 2

0

あなたのループは問題ありません、問題は別の場所にあります、これはうまくいきます

    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();
    }
于 2013-05-02T22:58:00.457 に答える