Java 如何在if语句中使用计时器

Java 如何在if语句中使用计时器,java,timer,int,Java,Timer,Int,我需要每x时间更新游戏中的食物量。我想使用if语句,但它不会工作,因为计时器和int不能一起工作,我猜 Timer timer = new Timer(200, this); public void update() { double dt = 0; timer += dt; if(timer > 1000) { food++; timer = 0;

我需要每x时间更新游戏中的食物量。我想使用if语句,但它不会工作,因为计时器和int不能一起工作,我猜

Timer timer = new Timer(200, this);
    public void update()
    {
        double dt = 0;
        timer += dt;
        if(timer > 1000)
        {
            food++;
            timer = 0;
        }
    }

我建议在这方面使用实时。要做到这一点,您只需要有两个变量(上次馈送的时间和现在的时间)。只需计算时间差并将其置于if条件中。参考以下示例:

import java.util.Date;

public class Main {
    public static Date lastDate = new Date();
    public static int food = 0;

    public static void main(String args[]) {
        System.out.println("Food was added on " + lastDate.toString() + ". Food now is " + food);
        while (food < 5) {
            update();
        }
    }

    public static void update() {
        Date dateNow = new Date();
        // in milliseconds
        long diff = dateNow.getTime() - lastDate.getTime();

        long diffSeconds = diff / 1000 % 60;
        // long diffMinutes = diff / (60 * 1000) % 60;
        // long diffHours = diff / (60 * 60 * 1000) % 24;
        // long diffDays = diff / (24 * 60 * 60 * 1000);

        // If more than 5 seconds have passed
        if (diffSeconds > 5) { // just change this to your desired interval
            lastDate = new Date(); // get the time now
            food++; // increment food
            System.out.println("Food was added on " + lastDate.toString() + ". Food now is " + food);
        }
    }
}


定时器+=0
??对于我的钱,我会考虑计算从“最后一次进食”过去的时间量,然后使用它,因为计时器天生不准确,但那就是我。这并不能真正回答我所需要的问题,但它可能对我在开发中的另一个游戏有用。谢谢你?但是我需要计时器与Int一起工作。知道这是如何工作的吗?作为“一般”规则,基于时间的比较比增加计数器更好,因为它们将更好地考虑系统开销和可能发生的延迟,这可能会导致计时器变得“不规则”,只是说;)@TassoPsaltakis如果它有帮助,那么请不要忘记接受它作为一个答案,并投票支持它!:)好啊非常感谢你。它工作得很好,我调整它来配合我的游戏,它运行得令人惊讶。有一件事,游戏现在闲置时,这是工作。有没有办法解决这个问题?@TassoPsaltakis你只需要在另一个线程中运行代码。有关如何创建线程的信息,请参阅本节->
Food was added on Fri Mar 29 09:15:08 SGT 2019. Food now is 0
Food was added on Fri Mar 29 09:15:14 SGT 2019. Food now is 1
Food was added on Fri Mar 29 09:15:20 SGT 2019. Food now is 2
Food was added on Fri Mar 29 09:15:26 SGT 2019. Food now is 3
Food was added on Fri Mar 29 09:15:32 SGT 2019. Food now is 4
Food was added on Fri Mar 29 09:15:38 SGT 2019. Food now is 5