Java 不能将double转换为int
我的脚本中有一个问题,它说我不能将double转换成整数 以下是bat中记录错误的位置:Java 不能将double转换为int,java,casting,floating-point,Java,Casting,Floating Point,我的脚本中有一个问题,它说我不能将double转换成整数 以下是bat中记录错误的位置: cm.getPlayer().yellowMessage("You have gained " + getJQ.getCurrentMap() + " JQ points!"); 错误来自方法getCurrentMap(),该方法位于此处 public int getCurrentMap() { return maps.get((level - 1)); } 级
cm.getPlayer().yellowMessage("You have gained " +
getJQ.getCurrentMap() + " JQ points!");
错误来自方法getCurrentMap()
,该方法位于此处
public int getCurrentMap() {
return maps.get((level - 1));
}
级别是一个整数,每次玩家提高一个级别时,该整数都会递增。我不明白的是我是如何收到这个错误的。当我打印出列表地图时,我会得到一个数字列表。我不知道怎么了
以下是我的声明:
private int level = 0;
错误图像:
代码:
如果要从double创建整数,请使用类似于Math.ceil
或Math.round
的函数。否则,如何进行转换是不明确的 如果level
是double
,那么结果也是double。Java不会将其转换为整数,因为那样会丢失信息。因此,您必须明确:
return maps.get((int) (level - 1));
如果从JavaScript中检索到level
(或任何其他int
),则代码甚至不会执行。您正在从JavaScript向int
分配一个double
,因此它甚至从未到达您的Java代码。从JavaScript接受一个double,然后使用(int)
将其转换为整数
如果要向上取整而不是向下取整,您可能需要首先使用Math.ceil
或其他取整方法。JavaScript没有整数,所有内容都是浮点值。因此,在某个地方,您从JavaScript中获得了一些浮点值,您试图将其视为整数。从你的问题来看,这在哪里发生还不清楚
将某个对象强制转换为它不是子类的类将失败;Double和Integer都是Number的子类,可以将Double转换为Number,但不能转换为整数。如果要将一个double值转换为整数,则可以在对象包装器上调用double的转换方法:
new java.lang.Double(10.001D).intValue();
它返回整数部分并丢弃任何小数部分。您到底收到了什么样的错误?Java不使用脚本,您只是指源代码吗?如果maps
是一个列表,我看不到任何地方在尝试强制转换时会首先出现双精度错误。你的代码中的double在哪里?你能发布一个和你的错误的stacktrace吗?@Xari如果你的代码中没有double,你就不会得到一个cast错误。到目前为止,您所展示的不会产生您所描述的错误。你需要像RC建议的那样创建一个mcve。除了我遇到的问题是我只使用整数,但它给了我这个双精度到整数的转换错误。问题是level实际上是一个整数,所以我不知道在哪里使用了双精度。你确定吗?JavaScript只知道双精度,不知道整数。这可能与此有关吗?也许!尽管使用了Math.floor,我还是在整数数组中添加了一个double,可能就是它。有没有办法将JavaScript双精度转换为整数?我使用了Math.floor,但它似乎仍然有浮点
其中x
是您的变量。我不知道他为什么删除了答案。或者只需使用(int)x
。请注意,如果您想取整,您可能需要先选择您的双人房。