不认为我没有在网上搜索答案。为什么它给我outofbounds错误?Java - 替换字符串中的字符
我有两个6个字符长的字符串。一个是“丹尼尔”,另一个是“------”。用户输入一个字符。循环遍历“daniel”字符串并通过char检查char是否与用户输入匹配。如果匹配,它应该用“------”中的那个替换猜测的字符。所以如果你输入'a'它应该输出“-a ----”,循环继续。接下来,如果输入'e',它应该输出“-a - e-”等。代码不会给出编译错误或任何警告,并且也是非常有意义的。我试过子串并替换,但是这更简单和更短。我试着调试它,但没有提供有用的信息。我不知道为什么它会返回outofbounds错误。
package hello.world;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String word="daniel";
StringBuilder guess2 = new StringBuilder("------");
char guess;
System.out.println("**********************");
System.out.println("* Welcome to Hangman *");
System.out.println("**********************");
for (int i=0;i<10;i++) {
System.out.print("Enter a letter: ");
guess=in.nextLine().charAt(0);
for (int j=0;i<word.length();j++) {
if (guess==word.charAt(j)) {
guess2.setCharAt(word.charAt(j), guess);
System.out.print(guess2);
}
}
}
}
}
输出:
**********************
* Welcome to Hangman *
**********************
Enter a letter: a
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 97
at java.lang.AbstractStringBuilder.setCharAt(AbstractStringBuilder.java:380)
at java.lang.StringBuilder.setCharAt(StringBuilder.java:76)
at hello.world.HelloWorld.main(HelloWorld.java:22)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
是的,这就是它。我的上帝太傻了。我用j替换了word.charAt(j),它完美地工作。我总是以简单为目标,但有时候我只会让事情复杂化。我可以在8分钟内接受答案。 – djoomla 2014-10-20 20:30:06