如何从列表中得出特定元素的总和?

时间:2016-05-15 15:03:22

标签: java

我想从ArrayList中获取特定元素的总和。这些元素是从我的sql db中提取的。

这是我现在尝试的但结果不是我想要的。

代码:

ArrayList<Ehealth> datalist = new ArrayList<Ehealth>();

while(rs.next()) {

    Integer grasimi = rs.getInt("Total_grasimi");
    Integer carbohidrati = rs.getInt("Total_carbohidrati");                   
    Integer proteine = rs.getInt("Total_proteine");
    Integer calorii = rs.getInt("Total_calorii");

    Ehealth ehealthlist =
         new Ehealth(grasimi,carbohidrati,proteine,calorii);

    datalist.add(ehealthlist);

    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(ehealthlist.calorii);
    int sum = 0;

    for (Integer integer : numbers) {
        sum = sum + integer;
    }

    System.out.println(sum);         
}

我在控制台中的结果是从特定类别的db中提取的值 例如:

364
586
586
183
586
449
458

我想把这些数字加起来。

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您的问题位于int sum = 0;行,因为您将while设置为每个sum循环,请尝试:

ArrayList<Ehealth> datalist = new ArrayList<Ehealth> ();

int sum = 0;

while(rs.next()){
    Integer grasimi = rs.getInt("Total_grasimi");
    Integer carbohidrati = rs.getInt("Total_carbohidrati");
    Integer proteine = rs.getInt("Total_proteine");
    Integer calorii = rs.getInt("Total_calorii");

    Ehealth ehealthlist = new Ehealth(grasimi,carbohidrati,proteine,calorii);

    datalist.add(ehealthlist);
}

for (Ehealth ehealth : datalist) {
    sum += ehealth.calorii;
}

System.out.println(sum);  

答案 1 :(得分:0)

您应该从数据库中获取所有数据,然后在以后使用该列表执行所需的操作。

例如

// Get all records 
ArrayList<Ehealth> datalist = new ArrayList<Ehealth>();

while(rs.next()) {

    Integer grasimi = rs.getInt("Total_grasimi");
    Integer carbohidrati = rs.getInt("Total_carbohidrati");                   
    Integer proteine = rs.getInt("Total_proteine");
    Integer calorii = rs.getInt("Total_calorii");

    Ehealth ehealthlist =
     new Ehealth(grasimi,carbohidrati,proteine,calorii);

    datalist.add(ehealthlist);
} 

// Sum the data 
int sum = 0;

for (Ehealth ehealth : datalist) {
    sum += ehealth.calorii;
}

// Print the total 
System.out.println(sum);