我正在创建一些魔术咒语,显然我希望每次使用之间都有延迟。
现在According to google,每秒有1000000000纳秒。
但是,不到两秒后魔术便开始充电。
@EventHandler
public void onInteract(PlayerInteractEvent e){
Player p = e.getPlayer();
if (p.getItemInHand().getType().equals(Material.BLAZE_ROD)){
{
{
if (!kam.containsKey(p.getName())) kam.put(p.getName(), (long) 0);
if (kam.get(p.getName()) < System.nanoTime()){
kam.remove(p.getName());
kam.put(p.getName(), System.nanoTime() + (1000000000 * 30));
//Do magic spell attack here.
}
}
}else{
p.sendMessage(ChatColor.AQUA + "Skill recharging!");
}
}
显然,我的代码尝试将
System.nanoTime()
加30秒,然后检查当前系统nanoTime
是否大于我放入哈希图中的系统,如果是,则执行该拼写。 最佳答案
建议您打印出值1000000000 * 30
并进行检查。您会发现它缠起来,因为它太大了,无法容纳整数。
换句话说,以下程序:
public class Test
{
public static void main(String args[])
{
System.out.println(1000000000 * 30);
System.out.println(1000000000L * 30);
}
}
打印出:
-64771072
30000000000
因此,如果使用
long
变体,它将可以正常工作。关于java - 1000000000纳秒似乎不等于一秒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27201623/