java.lang.ArrayIndexOutOfBoundsException:18

java.lang.ArrayIndexOutOfBoundsException:18,java,indexoutofboundsexception,Java,Indexoutofboundsexception,我需要解决一个纵横字谜,其中一种方法是在字谜中放一个单词。 但是当我运行它时,我得到以下错误: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18 at CrosswordPuzzleSolver.setWord(CrosswordPuzzleSolver.java:224) 这是我的代码: public static char[][] setWord(int[] gridSpecEntry, S

我需要解决一个纵横字谜,其中一种方法是在字谜中放一个单词。 但是当我运行它时,我得到以下错误:

 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18
at CrosswordPuzzleSolver.setWord(CrosswordPuzzleSolver.java:224)
这是我的代码:

  public static char[][] setWord(int[] gridSpecEntry, String wordsSpecEntry,
        char[][] grid) {
        if (wordsSpecEntry.length()>0&&wordsSpecEntry.length()==gridSpecEntry[2])
        {
        int y = gridSpecEntry[0]; //y-coordinate
        int x = gridSpecEntry[1]; //x-coord
        int w = gridSpecEntry[2]; //length of word
        int r = gridSpecEntry[3]; //horizontal or vertical
        if (r == 0) { //if is 0, you need to put in the word horizontal
            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;
}
publicstaticchar[]setWord(int[]gridSpecEntry,stringwordssspecentry,
字符[][]网格){
如果(wordsSpecEntry.length()>0&&wordsSpecEntry.length()==gridSpecEntry[2])
{
int y=gridSpecEntry[0];//y坐标
int x=gridSpecEntry[1];//x-coord
int w=gridSpecEntry[2];//字长
int r=gridSpecEntry[3];//水平或垂直
如果(r==0){//如果为0,则需要输入单词horizontal
for(int b=0;b

有人能帮我吗?

您的网格变量似乎比字符串小

我尚未在工作区进行测试,但请尝试:

for (int b = 0; b < wordsSpecEntry.length() && x+b < grid[y].length(); b++)
for(int b=0;b
x+b
y+a
可能是您的问题。这会为哪个输入产生此错误?它会为schwimmbad产生错误gridSpecEntry的输入是什么?