2014-12-07 104 views
0

我試圖從1000個條目的文件中讀取x,y座標。凸殼 - 從輸入文件中讀取

這是我到目前爲止有:

int n=4; 
    Point2D []p = new Point2D[n]; 
    p[0] = new Point2D(4,5); 
    p[1] = new Point2D(5,3); 
    p[2] = new Point2D(1,4); 
    p[3] = new Point2D(6,1); 

我可以打開這樣的文件:

Scanner numFile = new Scanner(new File("myValues.txt")); 
     ArrayList<Double> p = new ArrayList<Double>(); 
     while (numFile.hasNextLine()) { 
      String line = numFile.nextLine(); 
      Scanner sc = new Scanner(line); 
      sc.useDelimiter(" "); 
      while(sc.hasNextDouble()) { 
       p.add(sc.nextDouble()); 
      } 
      sc.close(); 
     } 
     numFile.close(); 

但我不知道如何與每次兩個數值創建陣列。 如果您需要更多信息,請讓我知道。

+0

如果您用語言重新標記問題,您將獲得更多幫助。它看起來像Java。 – 2014-12-07 18:45:43

回答

0

你真正需要做的是創建一個Point2D對象(使用您的.txt文件的coords)使用在循環的每次迭代中,然後將該對象添加到的Point2D對象的您的數組列表:

例如:

ArrayList<Points2D> p = new ArrayList<>(); 

Scanner numFile = new Scanner(new File("myValues.txt")); 

String pointOnLine = numFile.readLine(); 

while (numFile != null) //if line exists 
{ 

    String[] pointToAdd = pointOnLine.split(" +"); //get x y coords from each line, using a white space delimiter 
    //create point2D object, then add it to the list 
    Point2D pointFromFile = new Point2D(Integer.parseInt(pointToAdd[0]), Integer.parseInt(pointToAdd[1])); 
    p.add(pointFromFile); 
    numFile = numFile.readLine(); //assign numFile to the next line to be read 

} 

棘手的部分(而你在我假設被困的部分),則提取該文件的個別的X和Y座標。

我上面所做的是使用.split()方法將每一行轉換爲整行上每個數字的字符串數組,並用空格分隔。由於每行只能包含兩個數字(x和y),因此數組大小將爲2(分別爲元素0和1)。

從那裏,我們只需獲取字符串數組中的第一個元素(x座標)和第二個元素(y座標),然後將這些字符串解析爲整數。

現在我們已經將每行的x和y隔開了,我們使用它們來創建Point2D對象,然後將該對象添加到數組列表中。

希望能夠澄清事情

+0

非常感謝!這真的幫助了我 – user01230 2014-12-07 19:31:54