2017-01-28 12 views
0

私のコードは無限ループを引き起こしています。私はどこにも見つからず、私を狂ってしまいます。これに関する助言?以下の3つの方法のいずれかになる必要があります。それは1つのリンクされたリストを含む。どんな助けも素晴らしいだろう。おかげ無限ループの原因を見つけることができません

public boolean checkNotSamePlacements() { 

    Link current = head; 

    while (current != null) { 

     Link current2 = head; 

     while (current2 != null) { 

      if (current != current2) { 

       if (current.piece.col == current2.piece.col && current.piece.row == current2.piece.row) { 

        return true; 
       } 
      } 
      current2 = current2.next; 
     } 
     current = current.next; 
    } 

    return false; 
} 


public void checkAttacking() { 
    boolean foundPieces = false; 
    Link current = head; 

    while (current != null) { 

     Link current2 = head; 
     while (current2 != null) { 

      if (current != current2) { 

       if ((current.piece.isAttacking(current2.piece)) && foundPieces == false) { 

        System.out.print(current.piece.pieceType + " " + current.piece.col + 
        " " + current.piece.row + " " + current2.piece.pieceType + 
        " " + current2.piece.col + " " + current2.piece.row); 
        foundPieces = true; 
       } 
      } 
      current2 = current2.next; 
     } 
     current = current.next; 
    } 
    if (foundPieces == false) { 
     System.out.print("-"); 
    } 
} 

public void checkSpotFound (int col, int row) { 

    boolean foundPiece = false; 
    Link current = head; 

    while (current != null) { 

     if (current.piece.col == col && current.piece.row == row) { 

      System.out.print(current.piece.pieceType); 

      foundPiece = true; 
     } 
    } 

    if (foundPiece == false) { 
     System.out.print("-"); 
    } 
} 

}

+2

を、あなたのデバッガでこれをステップ実行することで何を学びましたか? –

+3

'checkSpotFound'では' current'を更新しません。 'current!= null'にループします。したがって、無限ループ。 –

+0

私の教授は、デバッガの使い方を教えてくれていません。 – NoviceProgrammer123

答えて

2

あなたのコード内のcurrentが更新されることはありません -

while (current != null) { 

    if (current.piece.col == col && current.piece.row == row) { 

     System.out.print(current.piece.pieceType); 

     foundPiece = true; 
    } 

    current = current.next; // you might want to add this to your code 
} 
+1

nullpointerありがとうございました:) – NoviceProgrammer123

+0

@ NoviceProgrammer123 - それが問題を解決する場合は、これを答えとしてマークしてください。 – nullpointer

+0

私はupvoted、答えのオプションとしてマークが表示されません? – NoviceProgrammer123

関連する問題