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