我正在开发一个基于电影InTime的“我的世界”插件。当玩家杀死你时,你会被暂停,失去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) ~[?:?]我对如何解决这些错误感到困惑,在尝试了几件不同的事情之后,我正在寻求一些建议。
发布于 2014-01-11 06:19:02
如果您在堆栈跟踪中看得更低,您将看到:
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中的InTime2API方法(在第551行,或者只找到试图在该方法中调用parseInt的一行)。如果希望解析成功,则需要执行parseFloat而不是parseInt,并将结果存储在浮点变量中。
发布于 2014-01-11 06:15:00
在代码中的某个地方,您正在将一个String解析为int,它尝试为1.25 (而不是int )尝试,所以错误
Caused by: java.lang.NumberFormatException: For input string: "1.25"https://stackoverflow.com/questions/21059187
复制相似问题