2014-06-25 316 views
-1

我正在使用BufferedReader從csv文件讀取一行整數和雙精度。但是,我需要調用單個變量並將它們計算爲整數和雙精度,而不是字符串,我相信這是BufferedReader導入變量的唯一方式。如何將字符串轉換爲int

這是我使用的代碼的BufferedReader:

String csvFile = "M:\\MandNDrives\\mwallace\\JAVA for NEMS\\EORModule\\NEMSEORDBEX1.csv"; 
    BufferedReader br = null; 
    String line = ""; 
    String cvsSplitBy = ","; 

    try { 

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

      String [] reservoir = line.split(cvsSplitBy); 

      REG = reservoir[3]; 
      DEP = reservoir[4]; 

而且我得到的錯誤:「不兼容的類型:INT不能轉換爲字符串」當我嘗試這個計算。 reserviro陣列的

public void varCalc(){ 

    switch (REG){ 
     case 1: TEMP = 0.107*DEP+61.065; break; 
     case 2: TEMP = 0.0123*DEP+80.302; break; 
+0

'BufferedReader導入變量的唯一方法'你是什麼意思? –

+1

'你不懂'不兼容的類型:int不能轉換爲String「嗎? –

+0

請使用['java.util.Scanner'](http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html)? –

回答

0

類型爲String,所以你需要分析的價值利用爲int類型:

Integer.parseInt 

爲了能夠在使用該值在計算下面的部分以您的代碼爲例

case 1: TEMP = 0.107*Integer.parseInt(DEP)+61.065; break; 
0

TEMP的類型爲int? 嘗試要麼

  • Double(DEP).doubleValue()轉換DEPdouble
  • Double.valueOf(DEP).doubleValue();
  • Integer.parseInt(DEP)(首選)
0

注意你的錯誤:

incompatible types: int cannot be converted to String

您需要給你se:

case 1: TEMP = 0.107*Integer.parseInt(DEP)+61.065; break; 
0

Java具有將字符串轉換爲原始值的包裝類。下面的例子中,我讀了一個充滿整數的csv文件,並且將每個整數從一個字符串解析爲一個整數變量。

public static void main(String[] args) throws Exception { 

    File file = new File("input.txt"); 

    Scanner sc = new Scanner(file); 

    while (sc.hasNextLine()) { 
     String [] values = sc.nextLine().split(","); 
     for(String s : values){ 
      int i = Integer.parseInt(s); 
      System.out.println(i); 
     } 
    } 
    sc.close(); 
} 

你可以做同樣的Double.parseDoubleLong.parseLong,等等,那麼你可以使用計算變量。

+0

這似乎是在我需要做的事情的軌道上。但是,我將如何通過String來讀取文件中包含的各個變量(這是一個csv文件)? – user3657527

+0

你是什麼意思?你可以使用'for'循環和一個索引值。所有的值都在你指定的位置(與標題對齊),所以如果你需要DEP並且你知道它是第三列,你可以這樣做:int i = Integer.parseInt(values [2]);'。 –