我正在寫一個解決Mastermind遊戲的程序。該計劃的要點是要列出所有可能的解決方案,並在每次猜測不正確之後,從列表中刪除任何至少不會提供該解決方案的內容。這個方法用來比較兩個字符串(guess和strFromArray),看它們是否得到相同的值。但是,我收到一個錯誤,我無法弄清楚爲什麼。任何幫助,將不勝感激。我不明白爲什麼我有這個錯誤:ConcurrentModificationException
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at Game.shortenTheList(Game.java:88)
at Game.guess(Game.java:76)
at Game.play(Game.java:40)
at Game.main(Game.java:23)
/*
* Compares the two strings. If they would get the same output, return false. If they would get a different output, return true.
*/
public boolean compare(String guess, String strFromArray, int black, int white)
{
int white2 = 0;
int black2 = 0;
char[] arr1 = guess.toCharArray();
char[] arr2 = strFromArray.toCharArray();
for(int i=0; i<guess.length(); i++)
{
if(arr1[i] == arr2[i])
{
black2 ++;
arr1[i] = '$';
arr2[i] = '%';
}
}
for(int i=0; i<guess.length(); i++)
{
for(int j=0; j<strFromArray.length(); j++)
{
if(arr1[i] == arr2[j])
{
white2++;
arr1[i] = '!';
arr2[j] = '@';
}
}
}
if(black == black2 && white == white2)
return false;
else
return true;
}
/*
* Shortens the list of possible solutions by eliminating everything that wouldn't get at least the given output.
*/
public void shortenTheList(String guess, int black1, int white1)
{
for (String str : possibleSolutions)
{
if(compare(guess, str, black1, white1))
{
possibleSolutions.remove(str);
}
}
}
你能證明它來自這個代碼片斷? –
Finny,沒有使用迭代器。你是通過多線程訪問它嗎?你能至少發佈stacktrace的前4行嗎? – hexafraction
在詢問異常情況時,請務必發佈堆棧跟蹤。 – chrylis