我正在尝试用Java编写扫雷并创建了一个Box类,其中包含一个实例变量isMine,用于确定该框是否为我的。我使用setter来设置这个变量,虽然当我使用构造函数时存在问题。在我的main方法中,当我创建并填充包含Box的ArrayLists的ArrayList时,我还使用随机数生成器来设置isMine变量。我在用于填充ArrayLists的同一个循环中完成所有操作。
ArrayList<ArrayList<Box>> boxList = new ArrayList<ArrayList<Box>>();
for(int i=0; i<10; i++){
boxList.add(new ArrayList<Box>());
}
for(int i=0; i<boxList.size(); i++){
for(int j=0; j<10; j++){
double rand = Math.random();
boxList.get(i).add(new Box());
boxList.get(i).get(j).drawBox(i,j);
rand = Math.random();
if(rand>.2){
boxList.get(i).get(j).setMine(false);
}
else{
boxList.get(i).get(j).setMine(true);
}
}
}
然而,似乎每个Box的isMine实际上都设置为最后一个Box的isMine设置为。因此,如果boxList.get(9).get(9).getMine()为false,则它们将全部为假。