StringIndexOutOfBoundsException:字符串索引超出范围:4

时间:2014-11-30 20:22:03

标签: java string indexoutofboundsexception

我需要解决填字游戏,一种方法是在拼图中加入一个词。 [...]

好的,我现在借助你的答案更改了我的代码。 现在就是这样:

public static char[][] setWord(int[] gridSpecEntry, String wordsSpecEntry,
        char[][] grid) {
        if (wordsSpecEntry.length()>0&&wordsSpecEntry.length()==gridSpecEntry[2])
        {
        int y = gridSpecEntry[0];
        int x = gridSpecEntry[1];
        int w = gridSpecEntry[2];
        int r = gridSpecEntry[3];
        if (r == 0) {
            for (int b = 0; b < wordsSpecEntry.length(); b++) {
                grid[y][x + b] = wordsSpecEntry.charAt(b);//line 224
            }
        } else {
            for (int a = 0; a < wordsSpecEntry.length(); a++) {
                grid[y + a][x] = wordsSpecEntry.charAt(a);
            }
        }
    }
    return grid;
}

但现在我收到以下错误:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18
at CrosswordPuzzleSolver.setWord(CrosswordPuzzleSolver.java:224)
你可以再帮我一次吗?

2 个答案:

答案 0 :(得分:1)

这意味着w大于String的长度。考虑这样做:

int w = wordsSpecEntry.length();       //length of the word

答案 1 :(得分:0)

如果收到此错误,则此参数不正确:

    int w = gridSpecEntry[2];       //length of the word

如果它不是wordsSpecEntry的长度,只需添加另一个验证:

        for (int i = 0; i < w && i < wordsSpecEntry.length(); i++)               {