1

Java プログラムにある入れ子になった while ループで大きな問題が発生しています。私がデバッグしたことから、コードは 2 番目の while ループ ステートメントを 1 回チェックし、ループを永久に終了します。なぜこれが起こっているのか見当がつかないので、ここにコードを投稿します:

while (current != null) {
        if(id == current.getMovie().getId()) {
           movieExists = true;
           movie = current;
           while (checkCurrent == movie) {
              showingPointer = checkCurrent.getMovie().getLinkHead();
              while (showingPointer != null) {
                 if (cal.compareTo(showingPointer.getShowing().getShowingCalendar()) == 0) {
                    return false;
                 }
                 showingPointer = showingPointer.getNext();
              }
              checkCurrent = checkCurrent.getNext();       
           }        
        }
        current = current.getNext();
     }
4

4 に答える 4

6

この文

while (checkCurrent == movie) {

オブジェクト参照と常に false を比較します。これは、2 つのインスタンスを比較する方法ではありません

次のような値を比較するようにコードを変更したい場合があります

 while(checkCurrent.getMovie().getId() == movie.getMovie().getId()){

または、equals() を実装して比較します。

等しいの詳細

于 2013-01-30T06:07:31.020 に答える
0

そうする代わりに、Node クラスでインターフェイスをwhile (checkCurrent == movie)使用し、そのメソッドをオーバーライドしてから、オブジェクトを比較する必要があります。オブジェクト参照を比較するので、あなたの場合は機能しません。Comparatorcompare==

于 2013-01-30T09:15:28.187 に答える
0

コードを実行すると return false の行に来ていると思います.returnステートメントが実行されている場合、メソッドからすぐに戻ります

于 2013-01-30T06:04:06.290 に答える
0

なぜreturn falseですか?これは、ループを中断するための正しい方法ではありません。break代わりに使用してください。

于 2013-01-30T06:07:09.777 に答える