Java if语句currentTimeMillis,检查是否已经过了特定时间

时间:2011-09-24 09:57:34

标签: java if-statement long-integer

我遇到了一个奇怪的问题。我正在尝试检查当前时间是否大于powertimer。当我运行该方法时,if-statement返回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 个答案:

答案 0 :(得分:3)

要检查当前时间是否“超过”powertimer超时,请执行

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

请注意您的行:

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

相当于

if (powerup.getPowertimer() > System.currentTimeMillis())
                            ^
                            |
                wrong direction of inequality

答案 1 :(得分:1)

你有错误的减法方法。这样做:

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

永远记住这一点:

  

delta = final - initial

感谢我的高中物理老师杰夫鲍威尔为我生命中经常使用的这个小宝石。