不認爲我沒有在網上搜索答案。爲什麼它給我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