我需要解决填字游戏,一种方法是在拼图中加入一个词。 [...]
好的,我现在借助你的答案更改了我的代码。 现在就是这样:
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)
你可以再帮我一次吗?
答案 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++) {