Заменить несколько одинаковых символов в массиве символов

1

Я работаю над игрой "угадай секретное слово" на Java. У меня есть массив символов, содержащий _ относительно количества букв в секретном слове. Я пишу метод, который заменит _ угаданным письмом. Моя проблема в том, что когда у меня несколько одинаковых букв; заменяется только первое вхождение. Это мой код:

public void replaceBlank(char letter){
    if(guessLetter(letter)==true){
        int x=getSecretWord().indexOf(letter);
            charArray[x]=letter;
        }
   }

Код внутри if - это часть, которая напрямую связана с заменой _. Я думаю, что мне нужен цикл for, но я не уверен, как его реализовать.

  • 0
    Примечание: if(guessLetter(letter)) достаточно
  • 0
    Вы должны пройти через весь массив
Теги:
string
arrays
replace
char

2 ответа

1
Лучший ответ

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;
        }
    }
}
  • 0
    Я не думаю, что getSecretWord() возвращает char[] .
  • 0
    @ m0skit0 arg, там отсутствовал вызов toCharArray() - исправлено. Спасибо!
Показать ещё 2 комментария
0

Вам нужно пройти через весь массив, для каждого индекса проверить, является ли это буквой, а затем заменить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню