0

这是一个非常简单的 Java 代码,我想编写一个代码来计算 step 方法被调用的次数。本质上,此代码将绘制一个 blob 并计算 blob 需要多少“步骤”。如果步数等于 Max,则 blob 将采用新的 dx/dy,例如新的速度。

Blob 类不是那么重要,所以我没有附上它。但是,PurposefulWanderer 类被另一个类调用,特别是 GUI

我尝试创建一个名为 current 的静态变量,并在 step 方法下将其加一,但这不起作用。它仍然说当前变量仍然是 0。

public class PurposefulWanderer extends Blob {
private int TOTAL;
private static int current = 0;

public PurposefulWanderer (double x, double y) {
    super (x, y);
    this.TOTAL = (int) (Math.random()*10)+10;

}

@Override
public void step() {
    ++current;
    // Choose a new step between -1 and +1 in each of x and y
    if (current == this.TOTAL) 
        dx = 2 * (Math.random()-0.5);
        dy = 2 * (Math.random()-0.5);
        x += dx;
        y += dy;
        current = 0

}

}

4

1 回答 1

4
if (current == this.TOTAL) 
    dx = 2 * (Math.random()-0.5);
    dy = 2 * (Math.random()-0.5);
    x += dx;
    y += dy;
    current = 0

您的代码在 if 语句后缺少花括号。if 语句现在仅适用于它之后的第一行。每次调用该方法时都会执行其他所有操作。包括将电流设置为零的线。

我猜你static在尝试完成这项工作时在那里添加了限定符?:) 您现在可以删除它。它会导致变量与 的所有实例共享,PurposefulWanderer当您有多个实例时会导致错误。

于 2019-06-13T12:50:56.513 回答