提前感谢您阅读我的问题。
我正在制作一个 Hangman 游戏,我想打印出当前单词的隐藏版本,但我想在猜到正确的字母时更新它(也在正确的位置)。我一直在 StackOverflow 上查找,但似乎找不到我理解的解释。如果有人可以帮助我,那就太好了。 :D
我将发布与此相关的 for 循环。如果您需要的话,我可以发布更多代码。在我的代码前面,answerInput 和guessInputString 都是使用br.readLine() 方法从控制台读取的。
for (int i = 0; i < inputAnswer.length(); i++) {
char inputAnswerChar = inputAnswer.charAt(i);
char guessInputChar =guessInputString.charAt(i);
if (inputAnswerChar == guessInputChar) {
replacementString.replace(replacementString.charAt(i), inputAnswerChar);
}
}
感谢您为我提供的任何帮助!
最佳答案
您的代码假设guessInputString
和replacementString
两者都至少有 inputAnswer
一样多的字符,这显然是错误的假设,因为您的循环仅保证 i
inputAnswer
存在第 ' 个字符字符串。
顺便说一句,replacementString.replace(replacementString.charAt(i), inputAnswerChar)
没有任何效果,因为它无法更改 String
它的执行时间是(因为 String
是不可变的)。您必须分配新的 String
此方法返回replacementString
:
replacementString = replacementString.replace(replacementString.charAt(i), inputAnswerChar)
关于Java:在 for 循环中使用 .charAt() 时出现 StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790574/