我正在尝试计算 Space[][] 中特定颜色的 Space 对象的数量。当我使用此方法来计算一行中特定颜色的对象数量时,它工作得很好:
public int countRowWhite(Space[][] board, int row)//TESTED//when counting in a row, the columns go up the row stays the
//same,THIS GOES THROUGH THE ROW ADDING UP NUMBERS OF WHITES
{
int count = 0;
for(int column=0; column<board.length;column++)
{
if((board[row][column]).getColour().equals(spaceColour.White))
{
count+=1;
}
}
return count;
}
但是,当我尝试此方法来计算列中的对象数量时,出现异常:
public int countColumnWhite(Space[][] board, int column)//when counting in a row, the columns go up the row stays the
//same,THIS GOES THROUGH THE ROW ADDING UP NUMBERS OF WHITES
{
int count = 0;
for(int row =0; column<board.length;row++)
{
if((board[row][column]).getColour().equals(spaceColour.White))
{
count+=1;
}
}
return count;
}
我在以下测试方法中调用这两个方法:
public void testMethods()
{
Space[][] test = new Space[5][5];
for(int i = 0; i < test.length; i++){
for(int j = 0; j < test.length; j++){
test[i][j] = new Space(spaceColour.Null);
}
}
test[0][1].setColour(spaceColour.White);
test[0][2].setColour(spaceColour.Black);
test[2][1].setColour(spaceColour.Black);
test[2][2].setColour(spaceColour.Black);
System.out.println(countColumnWhite(test, 0));
for(int row= 0; row<test.length;row++)
{
for(int column = 0; column<test.length;column++)
{
if (test[row][column].getColour().equals(spaceColour.White))
{
System.out.println("Whites at row: " + row + " and Column: "+ column);
}
}
}
如果有帮助,异常始终等于二维数组“test”的行数和列数
最佳答案
我想这一行:
for(int row =0; column<board.length;row++)
应该是:
for(int row = 0; row < board.length; row++)
您的终止条件是检查column
是否小于board.length
,而它应该检查row
是否小于 >板.长度
。您不断增加 row
,但终止条件永远不会成立,因此您最终会超出数组的范围。
另一件事是,您的代码隐式假设您正在使用方阵(即行数和列数相同的二维数组)。因此,如果行和列不相等,您也会遇到同样的问题。如果你的假设是有效的,那么这就很好。我想这是某种应该是正方形的游戏板。
关于java - 这哪里出了问题?线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553297/