我有一段代码:
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
有关,我调试它没有运气。
答案 0 :(得分:2)
如果要在每次迭代时将数组position
添加到ArrayList
,则add()
调用必须位于循环内:
do {
// ...
storedMembers.add(position);
} while(...);
修改强>
for (int i = 0; i < storedMembers.size(); i ++)
// ...
if (!checkIfPositionIsOccupied(position))
storedMembers.add(position);
}
答案 1 :(得分:0)
因为你没有在你的while循环中添加任何东西到列表中?!