所以我做了这个,但我只想让用户每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;
答案 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也可能解决问题