我在此代码块中有一个错误。调试器提示原因是这一行代码char chr = getSecretWord.charAt(i);
该代码的作用是寻找userInput
和之间的匹配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()方法分配给String以便我可以使用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
,则有效索引为零到四。您的原始循环i
将设置为0到 5进行 迭代 , 因此出现了问题。
但是,当您可以摆脱一些简单的东西时,似乎有很多不必要的代码。
首先,我将消除混乱的根源-函数名称听起来像是用户输入,并且密码必须完全匹配,而您的注释则相反:
谢谢,这有效。但是循环的原因是用户输入了一个字母,我想看看该字母是否在SecretWord中。(这是一个子手游戏)。
在这种情况下,您只想查看秘密单词中是否存在单个字符。我会更改函数名称以适合它,即使那样,也可以用更少的代码来完成:
private boolean isInSecretWord (String userInput) {
String secretWord = getSecretWord();
return secretWord.contains(userInput);
}
问题内容: 我想在很大的字符串的特定位置找到字符。但是我无法使用方法,因为范围超出了int的范围。有什么调整吗? 问题答案: 在Java中,字符串由字符数组支持。数组的理论大小受的最大值限制,因此不可能有超过2 31 -1个字符的字符串开头。 要解决此问题,您可以创建自己的使用多个数组或字符串作为存储的字符串类。
在映射上分配一些默认值 我知道我需要在地图中添加值 问题是我的循环不起作用。我需要从地图中添加value2,基于从那里的位置或从地图中添加value2
我有点卡在这个程序的第3部分,我正在工作。以下是要求: > 程序将提示用户输入有效的姓氏,直到输入有效的姓氏为止。一个姓氏如果只包含字母和空格,它以一个字母开始和结束,并且不包含2个连续的空格,那么它是有效的。
投入:8576产出:218预期产出:8+5+7+6=26 已修正:
问题内容: 我必须读取字符串并仅使用for循环输出每个字母的频率。讲师暗示我需要使用两个循环,并向我们提供了以下代码: 编辑: 我想我会死于这个问题,并发布一年前找到的解决方案,原因是该问题的点击率很高。 问题答案:
``公共静态void main(字符串[]args){ } ``