Java帮助25%的时间

时间:2014-01-11 06:13:38

标签: java math plugins minecraft

我正在开发基于Movie InTime的Minecraft插件。当玩家杀死你时,你将失去25%的时间并以TimeCard(书籍)的形式丢弃。杀死你的玩家可以拿起TimeCard并使用它。

目前,该插件只是试图让玩家年数增加25%,然后发出命令从玩家手中移除25年。 (y告诉服务器需要几年而不是几天,几周,几小时)

以下是代码:

  Integer time = itapi.getPlayerYears(player.getName());
  Double remove = Integer.valueOf(time) * 0.25;
  String minus = String.valueOf(remove) + 'y' ;
  itapi.removeTime(player.getName(), itapi.getDeathTime());
  ItemStack book = itapi.createTimeCard("Death of " + player.getName(), minus, 1);
  itapi.removeTime(player.getName(), minus);
  e.getDrops().add(book);

但是当玩家被杀时会抛出此错误:

http://pastebin.com/0aqSV37S

Caused by: java.lang.NumberFormatException: For input string: "1.25"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.7.0]
        at java.lang.Integer.parseInt(Integer.java:492) ~[?:1.7.0]
        at java.lang.Integer.parseInt(Integer.java:527) ~[?:1.7.0]
        at com.BlackMage.InTime2.InTime2API.removeTime(InTime2API.java:551) ~[?:?]

我对如何解决这些错误感到困惑,在尝试了几个不同的事情之后我正在寻找一些建议

2 个答案:

答案 0 :(得分:3)

您的代码中某处正在解析Stringint,并尝试1.25而不是int所以错误

Caused by: java.lang.NumberFormatException: For input string: "1.25"

答案 1 :(得分:1)

如果你在堆栈跟踪中看得更低,你会看到:

Caused by: java.lang.NumberFormatException: For input string: "1.25"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.7.0]
    at java.lang.Integer.parseInt(Integer.java:492) ~[?:1.7.0]
    at java.lang.Integer.parseInt(Integer.java:527) ~[?:1.7.0]
    at com.BlackMage.InTime2.InTime2API.removeTime(InTime2API.java:551) ~[?:?]
    at com.BlackMage.InTime2.DeathListener.onDeath(DeathListener.java:37) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0]

查看InTime2API中的removeTime方法(在第551行,或者只是找到尝试在该方法中调用parseInt的行)。如果您希望解析成功,则需要parseFloat而不是parseInt并将结果存储在浮点变量中。