我正在创建一个可以生成单词搜索游戏但仍处于早期阶段的程序。我从文本文件中获取了所有输入并将其转换为一个数组,该数组提供了单词,它的初始行和列起始点,以及它的水平或垂直。我已经开始了一个新方法,它将创建仅包含要隐藏的单词的基本拼图数组。我的问题是我一直得到:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11
at WordSearch.createPuzzle(WordSearch.java:50)
at WordSearch.main(WordSearch.java:25)
问题的代码片段如下:
public static char[][] createPuzzle(int rows, int cols, Word[] words) {
char[][] puzzle = new char[rows][cols];
for (int i = 0; i <= 9; i++) {
int xcord = words[i].getRow();
int ycord = words[i].getCol();
if (words[i].isHorizontal() == true) {
String word = words[i].getWord();
for (int j = 0; j < word.length(); j++ ) {
puzzle[xcord + j][ycord] = word.charAt(j);
}
} else {
String word = words[i].getWord();
for (int k = 0; k < word.length(); k++) {
puzzle[xcord][ycord + k] = word.charAt(k);
}
}
}
return puzzle;
}
public static void displayPuzzle(String title, char[][] puzzle) {
System.out.println("" + title);
for(int i = 0; i < puzzle.length; i++) {
for(int j = 0; j < puzzle[i].length; j++) {
System.out.print(puzzle[i][j] + " ");
}
System.out.println();
}
}
使用:
displayPuzzle(title, createPuzzle(11, 26, words));
在我的main方法旁边,创建单词array的代码。
答案 0 :(得分:1)
puzzle[xcord + j][ycord] = word.charAt(j);
如果xcord为8且j为> 1你会得到一个索引越界错误,因为你的拼图板只有9行。
你需要确保你的话语不会超越拼图界限。