Java:在for循环中使用.charAt()时的StringIndexOutOfBoundsException

时间:2016-01-14 13:13:43

标签: java

提前感谢您阅读我的问题。

我正在制作一个Hangman游戏,我想打印出当前单词的隐藏版本,但我想在猜到正确的字母时更新它(在正确的位置)。我一直在寻找StackOverflow,但我似乎无法找到我理解的解释。如果有人可以帮助我,那就太好了。 :d

我将发布这是关于for循环的。如果您需要,我可以发布更多代码。使用br.readLine()方法在我的代码中从控制台读取answerInput和guessInputString。

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);
    }

}

感谢您提供给我的任何帮助!

1 个答案:

答案 0 :(得分:3)

您的代码假设guessInputStringreplacementString的字符数至少与inputAnswer一样多,这显然是错误的,因为您的循环只能保证{{1} i String。

存在第{}个字符。

顺便说一句,inputAnswer没有效果,因为它无法更改它执行的replacementString.replace(replacementString.charAt(i), inputAnswerChar)(因为String是不可变的)。您必须将此方法返回的新String分配回String

replacementString