#java
#java
Вопрос:
Я делаю простую игру hangman. Приведенный ниже код обновляет буквы, поэтому он проверяет, правильно ли угадана буква в слове. Однако буква не будет сохранена, если угадана вторая правильная буква. Например, для «moose», если я угадаю «o», он распечатает (#oo ##), затем, если я угадаю «e», он распечатает ####e. Может быть, это как-то связано с оператором else? Я довольно новичок в этом, поэтому любые советы или просто документация помогут. Спасибо!
public static boolean updateWithGuess(char[] knownLetters,
char guessedLetter,
String word) {
boolean found = false;
for(int i = 0; i < word.length(); i ) {
if(word.charAt(i) == guessedLetter) {
knownLetters[i] = guessedLetter;
found = true;
}
else {
knownLetters[i] = BLANK;
found = false;
}
}
return found;
}
Комментарии:
1. зачем вам это нужно
knownLetters[i] = BLANK;
? если все позиции изначально пустые, нет необходимости снова присваивать им значение blank2. Вы сохраняете угаданную букву в одной переменной char, но вы сохраняете буквы секретного слова в массиве символов. Что, если… вы также сохранили угаданные символы во втором массиве символов и выполнили итерацию по нему, когда хотели узнать, догадался ли пользователь об этом?
Ответ №1:
Я предполагаю, что проблема не в этом методе, вместо этого попробуйте вернуть char[]
, а затем вызывающий метод обновит его, в конце концов, не заботясь о том, правильный он или неправильный (если только у вас нет какой-либо причины не делать этого). Также просто удалите все остальное, что вызывает вашу проблему, потому что она закрывает другие буквы, даже если они правильные.