【问题标题】:java.lang.ArrayIndexOutOfBoundsException: 18 [closed]java.lang.ArrayIndexOutOfBoundsException:18 [关闭]
【发布时间】:2014-11-30 21:12:30
【问题描述】:

我需要解决一个填字游戏,一种方法是在拼图中放一个单词。 但是当我运行它时,我收到以下错误:

 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;
}

有人可以帮帮我吗?

【问题讨论】:

  • x+by+a 可能是你的问题。
  • 对于哪个输入会产生这个错误?
  • 它为 SCHWIMMBAD 产生错误
  • gridSpecEntry 的输入是什么?

标签: java indexoutofboundsexception


【解决方案1】:

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

我还没有在工作区测试过,但可以试试:

for (int b = 0; b < wordsSpecEntry.length() && x+b < grid[y].length(); b++)

【讨论】:

    猜你喜欢
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 2014-12-06
    • 2017-11-02
    • 2014-04-03
    相关资源
    最近更新 更多