我有以Point2D.Double
类型存储的x,y坐标。
代码:
private Point2D[] block1 = new Point2D[99]
block1[0] = new Point2D.Double(12,14);
block1[1] = new Point2D.Double(15,16);
block1[2] = new Point2D.Double(20,20)
//etc all to 99.
//this can run about 10 times creating 10 different sets of x,y coordinates.
想要遍历所有数组,看看是否已经存在特定的坐标。如果它返回true。不确定最好的方法。
所以我知道我需要一个for / if循环。
示例:我想查看是否存在(15,16):
for(Point2D block[] : block1){
if(block.getX() == 15 && block.getY() == 16){
System.out.println("This is true");
}
}
所以我希望它搜索所有数组以查看是否存在(15,16)。我可以想象这个语法是沿着正确的行,但它是不对的。
答案 0 :(得分:1)
此方法将尽可能接近您所需的语法:
Point2D target = new Point2D.Double(15, 16);
for(Point2D block : block1){
if(target.equals(block)){
System.out.println("This is true");
}
}
顺便说一下,你提到你需要10次10组不同的坐标,所以你需要将99改为100,否则会使阵列崩溃:
Point2D[] block1 = new Point2D[100];
答案 1 :(得分:0)
几乎就在那里,现在只是将其提取到一个方法:
public boolean containsPoint(Point2D[] points, int x, int y) {
for(Point2D block : points){
if(block.getX() == x && block.getY() == y){
return true;
}
}
return false;
}
...
/* calling the method */
if(containsPoint(points, 10, 10)) { // do stuff }
答案 2 :(得分:0)
这一行出现错误:
for(Point2D block []:block1){
如果'block1'是一个数组,迭代'block的类型应该是数组的类型。即,只是Point2D - 而不是Point2D []。
首先,请尝试使用此代码段:
for (Point2D block : block1) {
if (block.getX() == 15 && block.getY() == 16) {
System.out.println("Found it");
}
}