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

标签 java

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

我正在制作一个 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);
    }

}

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

最佳答案

您的代码假设guessInputStringreplacementString两者都至少有 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/

相关文章:

java - 在没有任何中间文件的情况下在 Java 中创建 GraphViz 图

java - 如何从Java中的HashMap获取关键位置

java - 我有一个自定义对象的二维数组。我必须用 Java 实例化每个实例吗?

java - 从 java.io.IOException 中提取 HTTP 状态代码

java - 当我尝试在 jsp 上运行小程序时出现 AccessControlException

java - 如何在文件上传的servlet内获取输入类型="file"的文件名

JavaEE : Question about design

java - 使用 String[][] 模拟 contains()

java - 如何设置主 Activity 中显示的默认 fragment ?

java - GroupingBy 使用 Java 8 流