我有一段代码:

public void setBoardMemberPosition() {

    int[] position = null;

    do{
        positionX = RandomNumberGenerator.generateRandomNumber(Board.DIMENSION);
        positionY = RandomNumberGenerator.generateRandomNumber(Board.DIMENSION);

        position = new int[] { positionX, positionY };


    } while(checkIfPositionIsOccupied(position));

    board.setElementAt(positionX, positionY, name);
    storedMembers.add(position);

}


有人可以向我解释为什么未将元素添加到列表中的地方:

private ArrayList<int[]> storedMembers = new ArrayList<int[]>();是一个Class变量,并且:checkIfPositionIsOccupied(position)返回true / false

if (storedMembers.contains(position))

我觉得它与do while有关,我没有运气就调试了它。

最佳答案

如果要在每次迭代中将数组position添加到ArrayList,则add()调用必须在循环内:

do {
    // ...

    storedMembers.add(position);
} while(...);


编辑:

for (int i = 0; i < storedMembers.size(); i ++)
    // ...

    if (!checkIfPositionIsOccupied(position))
        storedMembers.add(position);
}

08-05 11:22