我正在Windows 7上的NetBeans 7.3.1上使用Java SE进行开发。我编写了以下代码。
import java.awt.geom.Point2D;
static void setDisplayParams(Vector<Point2D> coords, double xMin, double xMax, double yMin, double yMax){
Point2D newCoords, oldCoords;
Vector<Point2D> displayCoords = new Vector<Point2D>();
for (int i=0; i<coords.size(); ++i){
oldCoords=coords.elementAt(i);
newCoords.setLocation(oldCoords.getX(), yMax-oldCoords.getY());
displayCoords.add(newCoords);
}
}
在
行newCoords.setLocation(oldCoords.getX(), yMax-oldCoords.getY());
我收到了消息
variable newCoords might not have been initialzed
我用Google搜索
java.awt.geom.Point2D initializing java
并阅读here
Point2D.Double()
应该初始化java.awt.geom.Point2D变量。但是新的Coords没有字段Double。
我的for循环最初是
for (int i=0; i<coords.size(); ++i){
newCoords=coords.elementAt(i);
newCoords.setLocation(newCoords.getX(), yMax-newCoords.getY());
displayParams.displayCoords.add(newCoords);
}
这并没有给我任何错误信息,但它改变了我不想做的坐标值。
答案 0 :(得分:2)
您使用这样的静态引用。
for (int i=0; i<coords.size(); ++i){
newCoords=coords.elementAt(i);
displayParams.displayCoords.add(new Point2D.Double(newCoords.getX(), yMax-newCoords.getY()));
}
这将创建一个新的Point2D并保持我们的newCoords(数组中的元素)对象不变。