Java 凸包-从输入文件读取

Java 凸包-从输入文件读取,java,arrays,file,convex-hull,Java,Arrays,File,Convex Hull,我试图从一个有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(n

我试图从一个有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();
但我不知道如何创建每次有两个值的数组。
如果您需要更多信息,请告诉我。

您真正需要做的就是在循环的每次迭代中使用.txt文件中的坐标创建一个Point2D对象,然后将该对象添加到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对象,然后将该对象添加到数组列表中


希望这能澄清问题

如果你用语言重新标记问题,你会得到更多帮助。它看起来像Java。非常感谢!这真的帮助了我