2016-05-15 346 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);  
相關問題