我编写此代码是为了将double
转换为int
获取异常。
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot cast from Double to int
这是我的代码
Double d = 10.9;
int i = (int)(d);
答案 0 :(得分:10)
Double
是基元double
之上的包装类。它可以转换为double
,但不能直接转换为int
。
如果您使用double
代替Double
,则会编译:
double d = 10.9;
int i = (int)(d);
你也可以在中间添加一个强制转换为double
,如下所示:
int i = (int)((double)d);
答案 1 :(得分:5)
那是因为你不能混合拆箱(将你的Double
转换为双primitive
)并进行投射。
尝试
int i = (int)(d.doubleValue());
答案 2 :(得分:2)
此
Double d = 10.9;
是你的错误。您正在使用包装类而不是数据类型。使用
double d = 10.9;
答案 3 :(得分:0)
你不能将像Double这样的包装器直接转换为像int这样的原始类型。
你可以试试这个 -
int i = (int)((double)d);
更多检查以下链接 - http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html