比较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
。因此,您应该将 2
和 4
作为变量并根据 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]
希望这能解决问题。
我目前正在 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
。因此,您应该将 2
和 4
作为变量并根据 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]
希望这能解决问题。