J'écris un programme qui est fait pour résoudre le jeu Mastermind. L'essentiel du programme est de prendre une liste de toutes les solutions possibles et après chaque supposition qui n'est pas la bonne, supprimer quelque chose de la liste qui ne donnerait pas au moins cette solution. Cette méthode est faite pour comparer deux chaînes (guess et strFromArray) pour voir si elles ont les mêmes valeurs. Cependant, je reçois une erreur et je n'arrive pas à comprendre pourquoi. Toute aide serait appréciée.Je ne peux pas comprendre pourquoi j'ai cette erreur: 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);
}
}
}
Pouvez-vous le prouver provient de cet extrait de code? –
Finny, pas d'itérateur en cours d'utilisation. Accédez-vous à cela via plusieurs threads? Pouvez-vous poster au moins les 4 premières lignes du stacktrace? – hexafraction
Veuillez toujours envoyer la trace de la pile lorsque vous posez des questions sur une exception. – chrylis