Java 不能将double转换为int

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)); } 级

我的脚本中有一个问题,它说我不能将double转换成整数

以下是bat中记录错误的位置:

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
。请注意,如果您想取整,您可能需要先选择您的双人房。