2013-10-19 90 views
0

我有形式的文件:獨立文件到的ArrayList <ArrayList中<Double>>

2.3 2.5 
1.4 4.5 
.... 
NaN NaN 
2.2 1.4 
4.6 5.6 
.... 

(2雙打它們偶爾都等於列到「南」)

基本上我想分離兩列進:

ArrayList<Double> x; 
ArrayList<Double> y; 

雖然在列這兩個數字不等於「南」我想將它們添加到數組x和y。當BufferedReader讀取一行時:

NaN NaN 

我想將ArrayList x和y添加到allX和allY。

ArrayList<ArrayList<Double>> allX; 
ArrayList<ArrayList<Double>> allY; 

我想,然後開始一個新的ArrayList x和y,並繼續將數據讀入,直到我到達另一個楠楠線(在那裏我會重複上面的過程)或文件的末尾。

所以最後我留下了2個ArrayLists的雙列ArrayLists,x和y數據。

我不能想辦法做到這一點,任何想法?


如果它理解我的問題幫助:文件數據是經緯度數據對每一個國家的邊界​​在世界上每一個國家是由(緯度,經度)=(NAN,NAN)分離。我需要將數據分離成每個國家的ArrayList,它們都包含在父ArrayList中。

目前我有:

BufferedReader br = new BufferedReader(new FileReader(new File("file.txt"))); 
String line; 
String[] data; 
while((line=br.readLine())!=null){ 
    data=line.split(" "); //A String array with x and y (could be x="NaN" y="NaN") 
    //How do I then process this? 
} 
+1

你似乎有一個相當公平的想法你想要做什麼。要創建一個新的ArrayList,您需要編寫'new ArrayList()'並添加到數組列表中,您可以編寫'list.add(thingToAdd)'也許您會想到它比它更難。 –

回答

2

只給你一個想法。我知道這不是世界上最好的代碼,但它是給你足夠的信息,以便你可以繼續。希望能幫助到你。代碼是自我解釋的,如果你發現任何困難,請讓我知道。

public class MyMain1 { 
    private static final String CONSTANT = "NaN"; 

    public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new FileReader("/Users/Desktop/xyz.txt")); 

     List<List<Double>> allX = new ArrayList<>(); 
     List<List<Double>> allY = new ArrayList<>(); 
     List<Double> x = new ArrayList<>(); 
     List<Double> y = new ArrayList<>(); 
     try { 
      for (String str = null; (str = br.readLine()) != null;) { 
       String[] s = str.split(" "); 
       if (CONSTANT.equals(s[0])) { 
        allX.add(x); 
        allY.add(y); 
        x = new ArrayList<>(); 
        y = new ArrayList<>(); 
       } else { 
        x.add(Double.parseDouble(s[0])); 
        y.add(Double.parseDouble(s[1])); 
       } 
      } 
      if (x.size() > 0 && y.size() > 0) { 
       allX.add(x); 
       allY.add(y); 
      } 
     } finally { 
      br.close(); 
     } 
    } 
} 
+0

+1想象一下,如果你根本沒有發現任何異常情況會發生什麼,你的代碼會簡單得多,而且會做同樣的事情。 –

+0

@PeterLawrey我試過這個,但是想到把這個放在SO中是因爲極客的存在。感謝彼得的評論。 – Trying

+0

我只在增加值時添加異常處理。如果main()拋出異常,它將被打印。 –

相關問題