2016-12-03 69 views
1

我有一個整數一個文本文件,雙號這樣的:如何讀取的Java文件並保存每一項

16 -122.454803 41.923870 
17 -122.440536 41.946377 
18 -122.440498 41.956013 

我有3個表(一個int和兩個雙列表),我想保存每列中的項目。我如何拆分項目並將它們保存在列表中?

ArrayList<Integer> list1 = new ArrayList<Integer>(); 
    ArrayList<Double> list2 = new ArrayList<Double>(); 
    ArrayList<Double> list3 = new ArrayList<Double>(); 

    BufferedReader in = new BufferedReader(new FileReader("Nodes.txt")); 

    String line; 
    while((line = in.readLine()) != null){ 
     list1.setNodeId(line.split(" ")); 
     System.out.println(line); 
    } 
    in.close(); 
+0

確定。那麼問題是什麼?你的問題是什麼? –

+0

如何拆分「」並將每個號碼保存到每個列表? –

回答

2

方式一:

String line; 
while ((line = reader.readLine()) != null) { 
    String[] parts = line.split(" "); 
    if (parts.length != 3) { 
     continue; 
    } 
    list1.add(Integer.parseInt(parts[0])); 
    list2.add(Double.parseDouble(parts[1])); 
    list3.add(Double.parseDouble(parts[2])); 
} 

但是:此代碼缺少對數據類型的錯誤檢查。我想你需要處理後面的數據,所以我強烈建議你編寫一個GeoPosition類(只是從數據中猜出一個名稱),並使用索引和位置字段以及一個分解每行的parse(String)方法。與3個單獨的列表相比,這些元素的列表事後處理要容易得多。

0

您可以通過這種方式嘗試;)

ArrayList<Integer> list1 = new ArrayList<Integer>(); 
ArrayList<Double> list2 = new ArrayList<Double>(); 
ArrayList<Double> list3 = new ArrayList<Double>(); 

Path path = Paths.get("C:/User/.../.../.../nodes.txt"); 

Scanner in = new Scanner(path); 
double line; 

while(in.hasNextDouble()){ 
    line = in.nextDouble(); 
    list1.add((int)line); 

    line = in.nextDouble(); 
    list2.add(line); 

    line = in.nextDouble(); 
    list3.add(line); 


    System.out.println(line); 
} 
in.close(); 

不要忘了寫正確的路徑,並告訴我們,如果它的工作;)

編輯:小心點,我想和「15.05」是不是與我的方法的工作,它需要「15,05」,我認爲這將是與崗位相同剛過礦處理數據

1

String.split返回一個字符串數組。你需要採取適當的數組項並將其轉換爲所需的值類型

 String[] entries = line.split(" "); 
     list1.add(Integer.valueOf(entries[0])); 
     list2.add(Double.valueOf(entries[1])); 
     list3.add(Double.valueOf(entries[2])); 
2

你可以做這樣的事情:

public static void main(String[] args) { 

    // TODO Auto-generated method stub 

    ArrayList<Integer> list1 = new ArrayList<Integer>(); 
    ArrayList<Double> list2 = new ArrayList<Double>(); 
    ArrayList<Double> list3 = new ArrayList<Double>(); 

    BufferedReader in; 
    String line; 
    try { 
     in = new BufferedReader(new FileReader("Nodes.txt")); 
      while((line = in.readLine()) != null){ 
       System.out.println(line); 
       String arr[] = line.split(" "); 

       list1.add(Integer.valueOf(arr[0])); 
       list2.add(Double.valueOf(arr[1])); 
       list3.add(Double.valueOf(arr[2])); 
      } 
      in.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    for (int i = 0; i < list1.size(); i++){ 
     System.out.println(list1.get(i)); 
    } 

    for (int i = 0; i < list2.size(); i++){ 
     System.out.println(list2.get(i)); 
    } 

    for (int i = 0; i < list3.size(); i++){ 
     System.out.println(list3.get(i)); 
    } 

} 
相關問題