Java &引用;字符串索引越界异常“;随机文字游戏中的错误';s游戏方法

Java &引用;字符串索引越界异常“;随机文字游戏中的错误';s游戏方法,java,string,Java,String,我正在创建一个文字游戏,作为课堂作业,它使用字母w、x、y和z随机生成一个4个字母的单词,并让用户尝试猜测10次。问题是,当我输入5个字母时,我会得到一个字符串索引越界错误(StringIndexOutOfBoundsException),而不是打印“猜测的长度与单词的长度不匹配” 它说错误在“lett2=Character.toLowerCase(word.charAt(wx));”行中。问题是我的助教帮我写了这部分代码,所以我认为所有这些都是正确的。我做错了什么 方法代码: publi

我正在创建一个文字游戏,作为课堂作业,它使用字母w、x、y和z随机生成一个4个字母的单词,并让用户尝试猜测10次。问题是,当我输入5个字母时,我会得到一个字符串索引越界错误(StringIndexOutOfBoundsException),而不是打印“猜测的长度与单词的长度不匹配”

它说错误在“lett2=Character.toLowerCase(word.charAt(wx));”行中。问题是我的助教帮我写了这部分代码,所以我认为所有这些都是正确的。我做错了什么

方法代码:

   public int play(String str){

      char lett;
      char lett2;
      int total = 0;

      remainingGuesses = remainingGuesses - 1;

      for(int wx = 0; wx < str.length(); wx++) {

      lett = Character.toLowerCase(str.charAt(wx));
      lett2 = Character.toLowerCase(word.charAt(wx));

      if (lett2 == lett) {
         ++total;
         }
      }

      if (total == 4) {
         wordFound = true;
   }

     return total;
   }
例外情况:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
    at java.base/java.lang.String.charAt(String.java:709)
    at GuessingGame.play(GuessingGame.java:34)
    at GuessingGameMain.main(GuessingGameMain.java:21)
将此“if”语句添加到“play”方法的开头。它会为你处理“太大”的案子

if(str.length() > 4)
{
  System.out.println("Warning! Too many characters detected. Only reading top 4");
  str = str.substring(0,3);
}

word
在哪里定义?如果
word
Cat
str
Kitten
,你认为会发生什么?或者,请发布所有代码
word
是在以前的方法中定义的,我需要重新定义吗?@beastlyCoder Okay一个快速解决方法是首先检查长度,如果长度不相等,则不会匹配,除非我的教授告诉我们,我们不必编辑,只需编辑另一个类。在这种情况下,您所要做的就是修改game类的“play”方法,以初步检查输入字符串的长度是否为4。如果不是,则执行打印并返回false,否则继续执行。如果这符合您的需要,我可以修改我的答案代码以满足您的需要。它打印语句,但仍然会给我一个错误。实际上,我不确定我是否正确修改了它。你能修改你的代码吗?如果修改给你带来麻烦,我会给你一个精简的答案。只要在“play方法”的开头添加代码,它就应该可以工作了。但是,你不能编辑第一个片段的事实很糟糕。我会斥责你的教授强迫学生违反校长的规定。
if(str.length() > 4)
{
  System.out.println("Warning! Too many characters detected. Only reading top 4");
  str = str.substring(0,3);
}