我在这段代码中有一个错误。调试器表明原因是这行代码char chr = getSecretWord.charAt(i);
这段代码的作用是寻找之间的匹配userInput
and secretWord
。我有for loop
逐一检查secretWord字母的长度,如果有字母匹配则返回true。如果不是,则返回 false...但是当它应该返回 false 时程序崩溃...我猜这是这一行的内容,但不知道到底是什么getSecretWord.charAt(i);
private boolean isMatchingSecretWord(String userInput)
{
String secretWord = "";
String getSecretWord = getSecretWord();
for (int i = 0; i <= getSecretWord.length();i++)
{
char chr = getSecretWord.charAt(i);
secretWord = ""+chr;
if (secretWord.equals(userInput))
{
println("is true");
return true;
}
}
return false;
}
作为旁注,我对这段代码所做的是否正确,将 getSecretWorld() 方法分配给字符串,以便我可以使用 Strings 方法length()
?
String getSecretWord = getSecretWord();
for (int i = 0; i <= getSecretWord.length();i++)
调试代码:
Exception in thread "Thread-4" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:686)
at Hangman.isMatchingSecretWord(Hangman.java:49)
at Hangman.userInput(Hangman.java:34)
at Hangman.run(Hangman.java:20)*
for (int i = 0; i <= getSecretWord.length(); i++)
应该:
for (int i = 0; i < getSecretWord.length(); i++)
// ^^^
// see here
的有效索引n
- 字符串(或n
-元素数组)是0
通过n-1
包括的。
所以,如果你的密语是xyyzy
,有效索引为 0 到 4。你原来的循环迭代i
设置为零至five,因此出现了问题。
但是,当您可以使用简单的代码时,其中似乎有很多不必要的代码。
首先,我会消除一个混乱的根源 - 函数名称听起来像用户输入和秘密单词必须完全匹配,而您的评论表明不然:
谢谢,这有效。但循环的原因是用户输入一个字母,我想看看该字母是否在 SecretWord 内。 (这是一个刽子手游戏)。
在这种情况下,您只想查看秘密单词中是否存在单个字符。我会更改函数名称以适应,即使这样,也可以用更少的代码来完成:
private boolean isInSecretWord (String userInput) {
String secretWord = getSecretWord();
return secretWord.contains(userInput);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)