2016-05-15 41 views
0

我想从ArrayList中创建特定元素的总和。元素是从我的sql数据库中提取的。如何使列表中的特定元素的总和?

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

代码:

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);   
} 

我的结果在控制台是从数据库 的具体类别例如提取的值:

364 
586 
586 
183 
586 
449 
458 

我想使这些数字的总和。

谢谢!

+0

什么错误? EHEALTH(,grasimi,carbohidrati,蛋白质,calorii); –

+0

这不可能是你真正的代码,因为'新的Ehealth(,grasimi,carbohidrati,proteine,calorii);'不会编译。请多关注细节。 – Pshemo

+0

你想要的输出到底是什么?您正在打印,重置数字列表并在while循环内将sum变量设回0 ...是问题所在吗? –

回答

0

我觉得你的问题是在int sum = 0;线,becouse每while循环要设置sum为0。请您尝试一下:

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); 
+0

是否有效> Ehealth ehealthlist =新Ehealth(,grasimi,carbohidrati,蛋白质,卡路里); –

+0

请给你的答案增加更多的解释,而不是“试试” –

+0

它已经工作了。但是它返回了我最后一次操作的总和.Ex:364 + 586 = 950然后是950 + 586 = 1536等。 。为了我的额外“,”但结构更长,我删除了什么不重要。 – Bogdan

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);  
相关问题