ArrayIndexOutOfBoundsException的原因

时间:2016-04-08 19:00:17

标签: java arrays indexoutofboundsexception

我正在创建一个可以生成单词搜索游戏但仍处于早期阶段的程序。我从文本文件中获取了所有输入并将其转换为一个数组,该数组提供了单词,它的初始行和列起始点,以及它的水平或垂直。我已经开始了一个新方法,它将创建仅包含要隐藏的单词的基本拼图数组。我的问题是我一直得到:

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的代码。

1 个答案:

答案 0 :(得分:1)

puzzle[xcord + j][ycord] = word.charAt(j);

如果xcord为8且j为> 1你会得到一个索引越界错误,因为你的拼图板只有9行。

你需要确保你的话语不会超越拼图界限。