При использовании continue
и break
в области видимости цикла относится к ближайшему циклу (, как вы можете видеть здесь ) - поэтому при использовании их в while
Цикл они ссылаются на это.
Это то, что вызывает бесконечный цикл:
while(userPattern.charAt(i) == simonPattern.charAt(i)){
userScore += userScore;
continue; // this cause your infinity loop
}
continue
выполняется в цикле while
, и условие меняется на него - бесконечный цикл.
Чтобы решить вашу проблему, рассмотрите возможность использования следующего кода:
int userScore = 0;
for (; userScore < simonPattern.length(); userScore++) {
if (userPattern.charAt(userScore) != simonPattern.charAt(userScore))
break;
}
//Value of userScore here is the number of times the if statement return false -> which mean mumber of same chars
Поскольку userScore
- это число символов, которое мы уже проверяем в шаблоне.
Надеюсь, это поможет!