如何在Java中添加冷却时间?

时间:2017-10-05 06:58:39

标签: java

所以我做了这个,但我只想让用户每10秒使用一次?我怎样才能做到这一点? 我是初学者,所以请耐心等待。

            if (input == 1) {                    //    Gathering wood     //

            wood += 10;

            System.out.println("You go out into the forest, and find dead brushs and a few sticks lying on the ground. (+10 WOOD)");
            System.out.println("WOOD: " + wood );

            if (wood >= 20) {
                System.out.println("\n\t(!) You have enough wood to build a small hut.\n\n");
            }
            continue;

3 个答案:

答案 0 :(得分:0)

您可以创建一个全局日期变量,其中包含用户上次收集木材的日期/时间。

然后,您可以将此值与当前日期和时间进行比较,并检查时间差值是否低于10秒。

方法之外:

public Date lastGathered;

在gatherWood()方法中:

if ((LocalDateTime.now().getTime() - lastGathered.getTime()) >= 10000) {
    lastGathered = LocalDateTime.now();
    // Do your stuff
}

10000是毫秒。所以1秒钟是1000

答案 1 :(得分:0)

您可以使用:

TimeUnit.SECONDS.sleep(10);

答案 2 :(得分:-1)

我个人喜欢使用多头冷却时间。 对于您的代码,此示例应该可以帮助您

long actionTime = 0L;
----------------------------
long currentTime = System.currentTimeMillis();
if(input == 1 && currentTime - actionTime >= 10000) {
     actionTime = currentTime;
     //perform extra code here
} else {
     System.out.println("You have to wait: " + (10000 - (currentTime - actionTime)) + " more ms!");
}

首先你需要启动一个长0L,因为你不想在启动时等待10秒

然后检查输入是否为1,当前时间 - 动作时间是否大于10000

注意:10000ms = 10秒/ 1秒= 1000ms

如果是,则将actionTime设置为当前系统时间并解决问题

编辑:Swing Timer也可能解决问题