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
,因此最终while (window.contains(next))
将不得不返回false,并且while
循环将不得不中断。我的推理可能有缺陷,但删除行window.remove(window.indexOf(next));
。为什么这个while循环无限?
或者是我的推理有些其他部分有缺陷?
什么窗口?你永远不会说明 – jozefg
'window'是一个长度为30的数组,'fileArray'是一个数组。我从'fileArray'拷贝出'window.size()'长度的数组来创建'window'数组。 –
Zwischenzug
你的意思是arraylist? char []没有方法indexOf – jozefg