如何添加double值和double元素列表元素?

时间:2013-01-26 10:30:53

标签: java

我尝试了一个代码

double temp=0;
List list=new ArrayList();
list.add(1.1);
temp+=list.get(0); //error occurs here

发生的错误如下

  

二元运算符'+'的错误操作数类型

     

首先输入:double

     

第二种类型:对象

如何在列表中添加临时值和双精度值?

我更喜欢的编程语言是Java。

3 个答案:

答案 0 :(得分:4)

您需要使用原始包装类Double。

List<Double> list=new ArrayList<Double>();
list.add(new Double(1.1));

答案 1 :(得分:3)

Generic type进行编程时,您应该始终使用Collections类似List类似ArrayListJava 1.5+等等。

当您使用raw type列表时,方法List.get(0)将始终为您提供Object类型,您需要进行一些转换以使其生效。

因此,您可以在当前代码中向Double添加转换,这绝对是一个坏主意。

或者,您应该使用generic版本的List,如下所示: -

List<Double> list=new ArrayList<Double>();
list.add(1.1);

请注意,值1.1double,仍然可以直接添加,而无需将其转换为Double。这是因为Java的功能称为Auto Boxing

在Java中,当您在double引用中存储Double值时,double值会自动加到Double。反之,它被称为Unboxing,即从Doubledouble

这就是为什么,当你这样做时: -

temp+=list.get(0);

list.get(0)的值属于Double类型。由于您正在使用double基元类型执行操作,因此该值将自动boxeddouble,并执行添加操作。

答案 2 :(得分:2)

如果未定义通用类型。该列表将返回一个对象。这意味着你需要施放它:

temp+=(Double) list.get(0);

虽然直接在列表声明中定义泛型类型更容易:

List<Double> list=new ArrayList();

旁注:

您需要使用Double代替double才能生效。因为double是基本类型,而Double是列表可以存储的java对象