所以我试图制作System.currentTimeMillis();一个常数。很难解释这一点。代码应该做的是向System.currentTimeMillis()添加一个值;它做什么,等到代码返回true然后执行一个动作。所以基本上,我试图做一个"临时禁令"系统。因为System.currentTimeMillis不是一个常量值,当然,这将返回false。我想知道如何才能使这段代码成为现实
#include <string>
using namespace std;
int main()
{
int X = 0;
string zero = "touchPress 0 483 652\n";
if {
(X=0)
zero>>C:\test.txt;
x+5;
} return 0;
我使用的解决方案 将值存储为&#34; Long&#34;使用System.currentTimeMillis()在地图内部; 所以你要做的是。
long timeleft = StaticMaps.muteMap.get(uuid).getTime() * 1000; //seconds to miliseconds
if (System.currentTimeMillis() >= timeleft + System.currentTimeMillis()) {
plugin.mutemanager.destructPlayerMute(uuid, "Expired", "Removed by Console, Expired!");
} else {
KTools.notify("debug");
e.setCancelled(true);
}
timetoadd需要很长时间。
然后检查System.currentTimeMillis()是否是&gt; = hashmap中的值。
Map<UUID, Long> temp = new HashMap<>();
Long time = 3 * 1000; //3 * 1000 = 3 Seconds
temp.put(Identifier, System.currentTimeMillis() + timetoadd)
答案 0 :(得分:2)
你不想把它变成一个常数。您希望在给定时刻存储其值,并使用它来检查当前系统时间。
这很容易实现:
long timeleft = StaticMaps.muteMap.get(uuid).getTime() * 1000; //seconds to miliseconds
long lastCheckedTime = System.currentTimeMillis();
if (System.currentTimeMillis() >= timeleft + lastCheckedTime) {
plugin.mutemanager.destructPlayerMute(uuid, "Expired", "Removed by Console, Expired!");
} else {
KTools.notify("debug");
e.setCancelled(true);
}
......虽然公平,但除非false
大约为微秒,否则该陈述几乎保证为timeLeft
。
答案 1 :(得分:1)
你不能使System.currentTimeMillis();
成为常量(var / value),因为它不是var / value,而是返回一个的函数。
您要做的是将timestamps
当前时间(使用该值)加上禁止/静音时间保存到map
,然后schedule
解除禁止/取消静音的,或通过定期检查System.currentTimeMillis();
以及是否已超过(上方)任何预期的禁令/取消静音时间(您保存的那些),应用必要的操作(取消禁令或取消静音)。
我目前在手机上,我不能用我的(不太可靠的)记忆中的schedule
方法给出一个例子......
但 ,如果是托管版,我可以 尝试 :
//How to "schedule" the lift...
public /*static ?*/ void mutePlayer(??? uuid, long muteTime){
StaticMaps.muteMap.put(uuid, System.currentTimeMillis()+muteTime); //I'm assuming how the syntax is...Adapt as needed.
}
//Somewhere else, inside a loop that runs periodically...
for(Entry<uuid, long> scheduled : Staticamaps.muteMap.entrySet()){
if (System.currentTimeMillis() >= scheduled.value() /*lift timestamp*/)) {
plugin.mutemanager.destructPlayerMute(scheduled.key() /*uuid*/, "Expired", "Mute has expired!");
} else {
KTools.notify("debug");
e.setCancelled(true);
}
}
请注意,由于我无法了解muteMap
可用的语法或功能,因此我使用的部分内容应被视为pseudo-code
。