我正在尝试计算特定颜色的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);
}
}
}
如果有帮助,异常总是等于2d数组'test'具有的行数和列数
答案 0 :(得分:3)
我想这一行:
for(int row =0; column<board.length;row++)
应该是:
for(int row = 0; row < board.length; row++)
您的终止条件是检查column
是否小于board.length
,应该检查row
是否小于board.length
。你继续递增row
,但是终止条件永远不会成立,所以你最终会超出数组的范围。
另一件事是你的代码隐含地假设你正在使用方阵(即2-d数组相同数量的行和列)。因此,如果您有不相等的行和列,您将遇到相同的问题。如果你的假设是有效的,那么这很好。我想这是一种应该是正方形的游戏板。