Java 每次迭代只调用一次方法
我正在运行一个模拟,其中数组中的对象通过以下三种方法移动。我的模拟经历了多次迭代(大约30次)。这意味着我要运行move()30次。如果希望每个动物在每次迭代中只移动一次,那么需要标记哪些动物已经移动过 现在,整个生态系统类只有一个布尔变量,这还不足以标记每个移动的对象 您可以使用集合来存储已移动的动物 将其添加到生态系统类中:Java 每次迭代只调用一次方法,java,loops,oop,Java,Loops,Oop,我正在运行一个模拟,其中数组中的对象通过以下三种方法移动。我的模拟经历了多次迭代(大约30次)。这意味着我要运行move()30次。如果希望每个动物在每次迭代中只移动一次,那么需要标记哪些动物已经移动过 现在,整个生态系统类只有一个布尔变量,这还不足以标记每个移动的对象 您可以使用集合来存储已移动的动物 将其添加到生态系统类中: private Set<Animal> alreadyMoved; 私有集已被移动; 然后在每个周期的开始,创建一个新的集合,从头开始: already
private Set<Animal> alreadyMoved;
私有集已被移动;
然后在每个周期的开始,创建一个新的集合,从头开始:
alreadyMoved = new HashSet<Animal>();
alreadyMoved=newhashset();
然后在移动方法中:
public synchronized void move() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
if (ecosystem[i][j] != null) {
if (!alreadyMoved.contains(ecosystem[i][j]) {
// move it
alreadyMoved.add(ecosystem[i][j]);
}
}
}
}
}
公共同步作废移动(){
对于(int i=0;i|
以下是一些其他方法:
生态系统
数组,一个表示“本次迭代”,另一个表示“最后一次迭代”。或者在新迭代开始时翻转它们并清空“本次迭代”数组,或者只分配一个新数组,让旧数组进行GC是的,一个布尔标志应该工作,为什么它不是工作,这不是我可以很容易看到的。请考虑创建和发布一个有效的,这样我们就可以看到为什么事情不能正常工作。这应该是一个小程序,用你的问题作为代码格式化的文本,代码将编译和运行我们没有修改,直接向我们显示您的问题的d代码。将布尔值移动到每个数组上的object.Loop对象列表中。或者使用Map.To other;看起来OP有一个矩阵,对象沿着该矩阵移动,但它们只能移动一次。因此,将布尔值从循环中移除。@HovercraftFullOfEels谢谢。我添加了一些额外的代码。我的move()的实现,它可以在我的Carnivore类中找到,我还包括了我的cycle()方法,它是将所有东西集合在一起的方法。仍在努力解决这个问题!非常感谢任何帮助。
静态布尔值
--静态???说真的,不要像这样打自己的脚。拜托。@Frankie我喜欢这个主意。你能给我看几行你想让我开始的内容吗?