Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每次迭代只调用一次方法_Java_Loops_Oop - Fatal编程技术网

Java 每次迭代只调用一次方法

Java 每次迭代只调用一次方法,java,loops,oop,Java,Loops,Oop,我正在运行一个模拟,其中数组中的对象通过以下三种方法移动。我的模拟经历了多次迭代(大约30次)。这意味着我要运行move()30次。如果希望每个动物在每次迭代中只移动一次,那么需要标记哪些动物已经移动过 现在,整个生态系统类只有一个布尔变量,这还不足以标记每个移动的对象 您可以使用集合来存储已移动的动物 将其添加到生态系统类中: private Set<Animal> alreadyMoved; 私有集已被移动; 然后在每个周期的开始,创建一个新的集合,从头开始: already

我正在运行一个模拟,其中数组中的对象通过以下三种方法移动。我的模拟经历了多次迭代(大约30次)。这意味着我要运行move()30次。

如果希望每个动物在每次迭代中只移动一次,那么需要标记哪些动物已经移动过

现在,整个生态系统类只有一个布尔变量,这还不足以标记每个移动的对象

您可以使用集合来存储已移动的动物

将其添加到生态系统类中:

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
以下是一些其他方法:

  • 给每个动物一个额外的整数字段,该字段包含它移动到的最后一次迭代(否),而不是布尔值

  • 拥有2个
    生态系统
    数组,一个表示“本次迭代”,另一个表示“最后一次迭代”。或者在新迭代开始时翻转它们并清空“本次迭代”数组,或者只分配一个新数组,让旧数组进行GC


  • 是的,一个布尔标志应该工作,为什么它不是工作,这不是我可以很容易看到的。请考虑创建和发布一个有效的,这样我们就可以看到为什么事情不能正常工作。这应该是一个小程序,用你的问题作为代码格式化的文本,代码将编译和运行我们没有修改,直接向我们显示您的问题的d代码。将布尔值移动到每个数组上的object.Loop对象列表中。或者使用Map.To other;看起来OP有一个矩阵,对象沿着该矩阵移动,但它们只能移动一次。因此,将布尔值从循环中移除。@HovercraftFullOfEels谢谢。我添加了一些额外的代码。我的move()的实现,它可以在我的Carnivore类中找到,我还包括了我的cycle()方法,它是将所有东西集合在一起的方法。仍在努力解决这个问题!非常感谢任何帮助。
    静态布尔值
    --静态???说真的,不要像这样打自己的脚。拜托。@Frankie我喜欢这个主意。你能给我看几行你想让我开始的内容吗?