Tuesday, 10 September 2013

I cannot figure out why I have this error: ConcurrentModificationException

I cannot figure out why I have this error: ConcurrentModificationException

I'm writing a program that's made to solve the Mastermind game. The gist
of the program is to take a list of all the possible solutions and after
every guess that isn't the correct one, remove anything from the list that
wouldn't at least give that solution. This method is made to compare two
Strings (guess and strFromArray) to see if they get the same values.
However, I'm getting an error and I can't figure out why. Any help would
be appreciated.
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);
}
}
}

No comments:

Post a Comment