0

我正在 NetBeans 7.3.1 上使用 java SE 进行开发

我正在尝试读取 CSV 文件每行的前两个元素,将它们输入 Point2D 类型的点变量并将每个点附加到 Point2D 矢量坐标的末尾。我使用以下代码。

br = new BufferedReader(new FileReader(inputFileName));

Vector<Point2D> coords = new Vector<Point2D>();
Point2D newPoint=new Point2D.Double(20.0, 30.0);
while ((strLine = br.readLine()) != null){
     String [] subStrings = strLine.split(" ");
     System.out.print("Substrings = " + subStrings[0] + ", " + subStrings[1]);
     System.out.println();
     newPoint.setLocation(Float.parseFloat(subStrings[0]), Float.parseFloat(subStrings[1]));
     coords.add(newPoint);          
}

coords.add(newPoint); 根据需要附加该点,但它还将坐标中的每个现有元素替换为新点。如何阻止现有元素被新元素替换?

4

1 回答 1

7

每个 Point2D 中的值都发生变化的原因coords是因为您的 Vector 中实际上只有一个对象,您只是重复地将它添加到 Vector 中。当您调用时,setLocation您正在更新该单个对象,并且它反映在对 Vector 中包含的对象的每个引用中。

每次要添加另一个条目时,都需要创建一个新的 Point2D coords

改变

newPoint.setLocation(Float.parseFloat(subStrings[0]), Float.parseFloat(subStrings[1]));

newPoint=new Point2D.Double(Float.parseFloat(subStrings[0]), Float.parseFloat(subStrings[1]));
于 2013-08-09T02:21:41.237 回答