Как вы посчитаете количество раз, которое метод вызывается? - PullRequest
0 голосов
/ 13 июня 2019

Это очень простой Java-код, и я хочу написать код, который подсчитывает, сколько раз вызывается пошаговый метод.По сути, этот код будет рисовать большой двоичный объект и подсчитывать, сколько «шагов» он выполняет.Если номер шага равен макс., То капля примет новый 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

}

}

1 Ответ

4 голосов
/ 13 июня 2019
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, что приводит к ошибкам, когда их несколько.

...