比较java中的多维数组中的三个索引导致越界异常

Comparing three indices in a multidimensional array in java resulting in an out-of-bounds exception

我目前正在 java 中使用多维数组制作井字游戏,我似乎在这里碰壁了。我正在比较三个指数以确定它们是否相同(以宣布获胜者)。我发现我可以成功地比较两个而不会抛出异常。但是,如果我比较三个,则在显示用户获胜(水平)后抛出越界异常。我真的不确定发生了什么。该数组为 5×5 且类型为字符串,所有值初始设置为“”。我对这个网站很不了解,所以如果问题格式不正确,我很抱歉!请让我知道,以便我改进! :) 代码:

for (int row = 0; row < testArray.length; row++)
        {
            for (int column = 0; column < testArray[row].length; column++)
            {
                if ((testArray[row][column].equals("x")) && (testArray[row][column + 2].equals("x")) && (testArray[row][column + 4].equals("x")))
                    System.out.println("You win!");

                if (!(column % 2 == 0))
                    testArray[row][column] = "|";

                else if (!(row % 2 == 0))
                    testArray[row][column] = "-";

                System.out.print(testArray[row][column]);
            }
            System.out.println("");
        }

在此先感谢您!

编辑:作为参考,我输入行 = 0,列 = 0。然后将 r=0 col=0 设置为 x。 发生一次迭代,r=0,col=2 设置为 x,然后它再次询问。当我到达 r=0 时,col=4 是异常发生的时候。

在这一行中你不能使用:

((testArray[row][column].equals("x"))  
   &&(testArray[row][column + 2].equals("x")) 
   && (testArray[row][column + 4].equals("x"))

对于大于 3 的列,它将抛出 IndexOutOfBoundException。因此,您应该将 24 作为变量并根据 for 循环进行调整。

您遇到的错误在这一行:

if ((testArray[row][column].equals("x")) && (testArray[row][column + 2].equals("x")) && (testArray[row][column + 4].equals("x")))

这行越界异常是因为testArray[row][column + 2]对应的数组可能不存在

考虑迭代列的for循环达到

的情况

column = testArray[row][length-1]

这意味着列 + 2 = (长度 - 1) + 2 = 长度 + 1。

发生完全相同的错误 testArray[row][column + 4]

希望这能解决问题。