Java 无法将double转换为整数

Java 无法将double转换为整数,java,int,double,Java,Int,Double,我有以下代码 public ItemData findItem(Object searchterm) { if (searchterm instanceof Number) { int type = (int)((double) searchterm); return GETXmlParse.itemMap2.get(type); } return GETXmlParse.itemMap.get(searchterm.toString().

我有以下代码

public ItemData findItem(Object searchterm) {
    if (searchterm instanceof Number) {
        int type = (int)((double) searchterm);
        return GETXmlParse.itemMap2.get(type);
    }
    return GETXmlParse.itemMap.get(searchterm.toString().toUpperCase());
}
执行代码时,它会在以下位置抛出错误:int type=(int)((double)searchterm),表示双精度不能转换为整数

有没有办法把double转换成int

public class abc {

   public static void main(String[] args) throws Exception {

        double a = 101.55;
        int i= (int)a;
        System.out.println(i);

    }   
}

试试这个。

你只知道它是一个数字,所以你必须把它转换成一个数字

if (searchterm instanceof Number) {
    int type = ((Number) searchterm).intValue();

您也可以使用Number.intValue()或Number.doubleValue()“将double转换为int”是什么意思?截断使聚集向下舍入?为什么要将double转换为int?f、 e.值3,4将表示为整数3。为什么要先将某些内容转换为double,然后再转换为int?searchterm的类别是什么?我试图用Double searchterm重现您的问题,转换总是毫无例外地工作。JLS将从Double到int的转换定义为.public ItemData findItem(Double searchterm){if(searchterm instanceof Number){int type=(int)((Double)searchterm);返回GETXmlParse.itemMap2.get(type);}返回GETXmlParse.itemMap.get(searchterm.toString().toUpperCase());}