我有一段代码:
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 / falseif (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);
}