2014-03-13 58 views
1

我很難從.csv文件讀取字符串數值並將它們轉換爲雙精度值。下面是代碼:將.csv字符串值轉換爲雙倍

String filename = "/home/mahmoud/Desktop/CSV/remake1.csv"; 

    BufferedReader br = null; 
String line = ""; 
String cvsSplitBy = ","; 
    int val; 

try { 

    br = new BufferedReader(new FileReader(filename)); 
    while ((line = br.readLine()) != null) { 

      // use comma as separator 
     String[] country = line.split(cvsSplitBy); 

     val = Integer.parseInt(country[4]); 

        System.out.println(val); 

    } 

} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    if (br != null) { 
     try { 
      br.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

System.out.println("Done"); 
} 

當我編譯程序,我得到主要出現以下錯誤「在線程異常‘’java.lang.NumberFormatException:對於輸入字符串:‘6.55’

這裏是內容

2012-12-03,5.63,6.57,5.32,6.55,5816300,6.55

2012-11-01,4.66,5.68,4.37,5.59,5752000,5.59

:.csv文件的

2012-10-01,5.27 ,5.40,4.42,4.67,5958000,4.67

2012-09-04,5.91,6.56,5.21,5.26,5930600,5.26

就如何解決這一問題有何建議? 謝謝

+2

如果它是一個'float',爲什麼你使用'的Integer.parseInt( )'?聲明'float val;',而是使用'Float.parseFloat()'。 – AntonH

+1

或更好,'Double.parseDouble()' – fge

+0

確實如此,但考慮到示例中的數字,我認爲'float'就足夠了。 – AntonH

回答

3

數字格式顯示它不是一個整數,而是一個double。

所以,你應該聲明val爲雙:

double val; 

,並使用以下行來分析:

val = Double.parseDouble(country[4]); 
+0

問題是「將它們轉換爲雙值」,而不是浮動。 –

+0

編輯翻倍。謝謝。 – AntonH

1

你的標題說,你想,但你使用Integer.parseInt(),這將解析整數解析你的字符串。使用Double.parseDouble()代替的值。