我的脚本中有一个问题,它说我无法将双精度转换为整数...
这里是蝙蝠中记录错误的位置:
cm.getPlayer().yellowMessage("You have gained " +
getJQ.getCurrentMap() + " JQ points!");
错误不在方法getCurrentMap()
中,而是在这里......
public int getCurrentMap() {
return maps.get((level - 1));
}
等级是一个整数,每当玩家升级一个等级时它就会递增。我不明白的是我是如何收到这个错误的。当我打印出List<Integer> maps
时,我会得到一个数字列表。我不明白错误。
以下是我如何宣布:
private int level = 0;
答案 0 :(得分:2)
如果level
是double
,那么结果也是双倍的。 Java不会将其转换为整数,因为这会丢失信息。所以你必须明确说明:
return maps.get((int) (level - 1));
如果从JavaScript检索level
(或任何其他int
),则代码甚至不会被执行。您正在将double
从JavaScript分配给int
,因此它甚至从未到达您的Java代码。接受JavaScript中的double,然后使用(int)
进行转换将其转换为整数。
如果您想要向上舍入而不是向下舍入,则可能需要先使用Math.ceil
或其他舍入方法。
答案 1 :(得分:1)
如果要从double创建整数,请使用Math.ceil
或Math.round
之类的函数。否则,应该如何进行转换是不明确的。
答案 2 :(得分:1)
JavaScript没有整数,一切都是浮点值。所以在某个地方你有一些浮点值,你可以从JavaScript中得到一个整数。如果发生这种情况,你的问题就不清楚了。
将某些内容转换为不属于其子类的类将失败; Double和Integer都是Number的子类,您可以将Double转换为Number但不转换为Integer。如果你想要转换为整数的double值,你可以在对象包装器上调用Double的转换方法:
new java.lang.Double(10.001D).intValue();
返回整数部分并丢弃任何小数部分。