我尝试了一个代码
double temp=0;
List list=new ArrayList();
list.add(1.1);
temp+=list.get(0); //error occurs here
发生的错误如下
二元运算符'+'的错误操作数类型
首先输入:double
第二种类型:对象
如何在列表中添加临时值和双精度值?
我更喜欢的编程语言是Java。
答案 0 :(得分:4)
您需要使用原始包装类Double。
List<Double> list=new ArrayList<Double>();
list.add(new Double(1.1));
答案 1 :(得分:3)
在Generic type
进行编程时,您应该始终使用Collections
类似List
类似ArrayList
,Java 1.5+
等等。
当您使用raw type
列表时,方法List.get(0)
将始终为您提供Object
类型,您需要进行一些转换以使其生效。
因此,您可以在当前代码中向Double
添加转换,这绝对是一个坏主意。
或者,您应该使用generic
版本的List,如下所示: -
List<Double> list=new ArrayList<Double>();
list.add(1.1);
请注意,值1.1
是double
,仍然可以直接添加,而无需将其转换为Double
。这是因为Java
的功能称为Auto Boxing
。
在Java中,当您在double
引用中存储Double
值时,double
值会自动加到Double
。反之,它被称为Unboxing
,即从Double
到double
。
这就是为什么,当你这样做时: -
temp+=list.get(0);
list.get(0)
的值属于Double
类型。由于您正在使用double
基元类型执行操作,因此该值将自动boxed
到double
,并执行添加操作。
答案 2 :(得分:2)
如果未定义通用类型。该列表将返回一个对象。这意味着你需要施放它:
temp+=(Double) list.get(0);
虽然直接在列表声明中定义泛型类型更容易:
List<Double> list=new ArrayList();
旁注:
您需要使用Double
代替double
才能生效。因为double
是基本类型,而Double
是列表可以存储的java对象