ava.lang.StringIndexOutOfBoundsException:字符串索引超出范围:java at java.lang.String.charAt(String.java:658)

时间:2017-03-04 18:42:29

标签: java string charat

所以我有这段代码。

class Hangman {
public static void main(String[] args) {
    char LetterGuess;
    int x;
    int num = 0;                                    //Number of letters in a word
    int y = 0; //(int)(Math.random() * 16 );
    char CurrLet;
    String word = "yes" ;
    byte[] Guess = new byte[15];

    switch(y) {

        case 0:
            word = "blindfold" ;
            num = word.length();
            break;
    }
    for(boolean guessed = false; guessed = true;) {

        for(x = 0; x < num +1; x++) {
                 if(Guess[x] == 1) {
                    CurrLet = word.charAt(x);
                    System.out.print(CurrLet);
                 } else {
                     System.out.print(" _");
            }
        }

         System.out.println("");
         System.out.println("");
         LetterGuess = Keyboard.readChar();

         for(x = 0; x < num +1; x++) {
            CurrLet = word.charAt(x);
            if(LetterGuess == CurrLet) {
                Guess[x] = 1;
            }
         }


    }

}

}

它编译得很好但是当我输入第一个字符并输入它时会给我这个错误:

  

线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:9       at java.lang.String.charAt(String.java:658)       在Hangman.main(Hangman.java:34)

我要做的是从字符串中读取字符而不创建包含所有字符的数组。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

更改

for(x = 0; x < num +1; x++)

for(x = 0; x < num; x++)

你也可能意味着

for(boolean guessed = false; guessed == true;) // notice == instead

然后在此(外部)true循环中将此标志设置为for