2012-12-20 54 views
0

我需要實現的是從包含雙打的兩列如下文本文件導入數據:充分利用文本文件中的特定列到一個數組

201.0176 1.06E+03 
201.7557 1.11E+01 
202.0201 2.02E+02 
202.2064 9.76E+00 
202.8342 1.11E+01 
203.0161 2.02E+02 
203.1638 9.61E+00 
203.3843 1.13E+01 

最多有大約50,000的這些行數據。我希望每個列都被導入到一個單獨的數組中,但我無法弄清楚如何識別不同的列。我曾嘗試以下:

public class CodeTests { 

    public static ArrayList assignArray(String filePath) throws FileNotFoundException { 
     Scanner s = new Scanner(new File(filePath)); 
      ArrayList<Double> list = new ArrayList<Double>(); 
      while (s.hasNext()){ 
       list.add(s.nextDouble()); 
      } 
      s.close(); 
      return list; 
    } 

    public static void main(String[] args) throws IOException { 
     /* 
     * 
     */ 
     ArrayList arrayMZ; 
     arrayMZ = assignArray("F:/Stuff/Work/Work from GSK/From Leeds/ja_CIDFragmenter/testFile.txt"); 

     for(int i = 0; i < arrayMZ.size(); i++) 
      System.out.println(arrayMZ.get(i)); 
     System.out.println("End"); 
    } 
} 

運行此我得到的輸出:

run: 
201.0176 
1060.0 
201.7557 
11.1 
202.0201 
202.0 
202.2064 
9.76 
202.8342 
11.1 
203.0161 
202.0 
203.1638 
9.61 
203.3843 
11.3 
End 
BUILD SUCCESSFUL (total time: 1 second) 

誰能幫助我要麼分開這些列成兩個陣列或連成的列下一個二維數組數組[0]與其中的第一個數據列,數組[1]與第二個。即:

[0]   [1] 
201.0176 1.06E+03 
201.7557 1.11E+01 
202.0201 2.02E+02 
202.2064 9.76E+00 
202.8342 1.11E+01 
203.0161 2.02E+02 
203.1638 9.61E+00 
203.3843 1.13E+01 

我試圖讓這個儘可能清楚,但如果有什麼其他請讓我知道。

感謝

回答

1

你可以做這樣的事情:

public static ArrayList[] assignArray(String filePath) throws FileNotFoundException { 
    Scanner s = new Scanner(new File(filePath)); 
     ArrayList[] list = new ArrayList[2]; 
     ArrayList<Double> col1 = new ArrayList<Double>(); 
     ArrayList<Double> col2 = new ArrayList<Double>(); 
     while (s.hasNext()){ 
      String[] data = s.nextLine().split("\\s+"); 
      col1.add(Double.parseDouble(data[0])); 
      col2.add(Double.parseDouble(data[1])); 
     } 
     s.close(); 
     list[0] = col1; 
     list[1] = col2; 
     return list; 
} 

,並獲得兩個ArrayList中與您的數據的數組。

+0

這太棒了,謝謝。我從來沒有使用過一個ArrayList,他們真的很有用。 – Primigenia

0

喜歡的東西:

for(int i = 0; i < arrayMZ.size()/2; i+=2) 
    System.out.printf("%.4f\t%E\n", arrayMZ.get(i), arrayMZ.get(i + 1)); 
+0

這將按照我希望的方式打印數組,但我希望以更合理的方式將文本**中的數據**存儲**,以便稍後可以編寫更多代碼,以便通過陣列(一個或多個)。 – Primigenia

+0

啊,對不起,我誤解了這個問題 – maverik

相關問題