我正在制作一个Hangman游戏。我差不多完成了它,但是我编写的代码,只要在隐藏的单词中用猜测的字母替换了两个或更多的点,就只适用于第一个。例如,如果要找到的单词是“ball”,并且用户输入“b”和“l”,而不是“b_ll”,则他将作为隐藏单词返回的单词是“b_l_”。这是一种奇怪的练习,因为用户首先键入字母,而不是在每次猜测后得到反馈。这是代码。
for (int c = 0; c < guessedLetters.length(); c++)
{
if (wordToBeFound.contains(Character.toString(guessedLetters.charAt(c))))
{
hiddenWordChars[wordToBeFound.indexOf(guessedLetters.charAt(c))] =
guessedLetters.charAt(c);
}
}
提前谢谢。
答案 0 :(得分:2)
问题是indexOf()只提供它找到的第一个索引。意味着上面的代码在第一次命中后停止。解决方案是:
for (int c = 0; c < guessedLetters.toCharArray().length(); c++)
{ // for each guessed letter
for(int c1 =0; c1<wordToBeFound.toCharArray().length; c1++){ //look at each letter in the word, searching for a match
if(guessedLetters[c]==hiddenWordChars[c1]){
hiddenWordChars[c1] = guessedLetters[c];
}
}
}