2014-11-14 37 views
0

我給data.txt文件,並要計算使用ArrayList如何將字符串arraylist轉換爲double來使用for循環來計算?

我的data.txt文件總量包含:

32.14,235.1,341.4,134.41,335.3,132.1,34.1

到目前爲止,我

public void processFile() throws IOException 
{ 
    File file = new File("SalesData.txt"); 

    Scanner input = new Scanner(file); 
    ArrayList<String> arr = new ArrayList<String>(); 
    String line = input.nextLine(); 

    StringTokenizer st = new StringTokenizer(line, ","); 

    while (st.hasMoreTokens()) 
    { 
     arr.add(st.nextToken()); 
    } 

    setArrayListElement(arr); //calls setArrayListElement method 

} 

,這裏是我的setArrayListElement方法:

private void setArrayListElement(ArrayList inArray) 
{     
    for (int i = 0 ; i < inArray.size() ; i++) 
    { 
     // need to convert each string into double and sum them up 
    } 
} 

我可以得到一些幫助嗎?

+3

使用'Double.parseDouble()'將'String'轉換爲'double'。 – Jesper 2014-11-14 12:56:53

+0

請在參數private void setArrayListElement(ArrayList inArray)中添加參數Arraylist – StackFlowed 2014-11-14 13:04:59

回答

0

你必須使用Double.valueOf()

Double.valueOf(string); 
2
  1. 不要用貨幣計算的雙打(前面的答案也是錯誤的)
  2. 決不是指一個具體的類。在這種情況下的接口是List arr = new ArrayList();

您的具體答案:

BigDecimal summed = BigDecimal.ZERO; 

for (int i = 0 ; i < arr.size() ; i++) { 
final String value = arr.get(i); 
try{ 
    BigDecimal bd = new BigDecimal(value); 
    summed = summed.add(bd); 
} catch(NumberFormatException nfe){ 
     //TODO: Handle 
} 
} 

...

+0

使用顯式索引訪問而不是'for(String value:arr)'的任何原因? – 2014-11-14 16:01:08

+0

更正,在這種情況下不需要索引循環。 – 2014-11-14 16:24:52

0
Double value = Double.parseDouble(yourString); 
0

我後你計算總金額的方法,不要忘記控制例外。

private Double setArrayListElement(ArrayList inArray) throws NumberFormatException 
{ 
    Double amount=0;  
    for (int i = 0 ; i < inArray.size() ; i++) 
    { 
     amount= amount+Double.valueOf(inArray.get(i)); 
    } 
    return amount; 
}