int MATCH_LENGTH = 0;
int FINAL_MATCH_LENGTH = 0;
int FINAL_MATCH_POS = 0;
while (window.contains(next)) {
int MATCH_POS = window.indexOf(next);
boolean nextMatches = true;
while (nextMatches = true) {
int index = window.indexOf(next);
index++;
int positionOfNext = fileArray.indexOf(next);
positionOfNext++;
MATCH_LENGTH++;
char afterNext = fileArray.get(positionOfNext);
char afterNextInWindow = window.get(index);
if (afterNext != afterNextInWindow) {
nextMatches = false;
if (MATCH_LENGTH > FINAL_MATCH_LENGTH) {
FINAL_MATCH_POS = MATCH_POS;
FINAL_MATCH_LENGTH = MATCH_LENGTH;
MATCH_LENGTH = 0;
}
window.remove(window.indexOf(next));
}
}
}
ここで無限ループに陥ります。nextMatches
ブール変数が原因だと思います。ただし、while
ループの条件がwhile (window.contains(next))
. ただし、出現するものをnext
1 つずつ削除しているため、最終的while (window.contains(next))
には false を返す必要があり、while
ループを中断する必要があります。ここでの私の推論には、 remove line に欠陥がある可能性がありますwindow.remove(window.indexOf(next));
。
それとも、私の推論の他の部分に欠陥がありますか?