Я работаю над игрой "угадай секретное слово" на Java. У меня есть массив символов, содержащий _
относительно количества букв в секретном слове. Я пишу метод, который заменит _
угаданным письмом. Моя проблема в том, что когда у меня несколько одинаковых букв; заменяется только первое вхождение. Это мой код:
public void replaceBlank(char letter){
if(guessLetter(letter)==true){
int x=getSecretWord().indexOf(letter);
charArray[x]=letter;
}
}
Код внутри if - это часть, которая напрямую связана с заменой _
. Я думаю, что мне нужен цикл for, но я не уверен, как его реализовать.
indexOf
возвращает только индекс первого вхождения символа. Вместо того, чтобы использовать его, я бы рассматривал секретное слово как массив и просто перебирал его:
public void replaceBlank(char letter) {
char[] secret = getSecretWord().toCharArray();
for (int i = 0; i < secret.length; ++i) {
if (secret[i] == letter) {
charArray[i] = letter;
}
}
}
getSecretWord()
возвращает char[]
.
toCharArray()
- исправлено. Спасибо!
Вам нужно пройти через весь массив, для каждого индекса проверить, является ли это буквой, а затем заменить.
if(guessLetter(letter))
достаточно