Java if-Statement currentTimeMillis, проверить, прошло ли определенное время - PullRequest
3 голосов
/ 24 сентября 2011

Я столкнулся со странной проблемой. Я пытаюсь проверить, больше ли текущее время, чем powertimer. Когда я запускаю метод, оператор if возвращает true, хотя powerup.getPowertimer() - System.currentTimeMillis() больше 0, что я проверил, распечатав результат.

this.powertimer = System.currentTimeMillis() + 10000;
public long getPowertimer() {
    return this.powertimer;
}

if ((powerup.getPowertimer()  - System.currentTimeMillis()) > 0) {
    System.out.println(powerup.getPowertimer() - System.currentTimeMillis());
    powerup.reversePower(player);
    expired.add(powerup);
}

Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2011

Чтобы проверить, прошло ли текущее время время ожидания powertimer, выполните

if (System.currentTimeMillis() > powerup.getPowertimer()) {
    ...
}

Обратите внимание, что ваша строка:

if ((powerup.getPowertimer()  - System.currentTimeMillis()) > 0)

эквивалентна

if (powerup.getPowertimer() > System.currentTimeMillis())
                            ^
                            |
                wrong direction of inequality
1 голос
/ 24 сентября 2011

Вы получили неправильное вычитание. Сделайте это:

if (System.currentTimeMillis() - powerup.getPowertimer() > 0)

Всегда помните это:

дельта = окончательная - начальная

Спасибо моему учителю физики в средней школе Джеффу Пауэллу за этот маленький драгоценный камень, который я часто использовал в своей жизни.

...