我有一个点List<Point> newcoor = new List<Point>();
列表和特定坐标,它是点列表的中心。 int centerx, centery;
我想要做的是使用centerx添加1并使用centery 减去1,直到它达到与列表中的Point匹配的组合。然后将该点存储在数组中。这是我的代码:
List<Point> newcoor = new List<Point>(); // list of points that where the tempx and tempy will be compared to.
//...
Point[] vector = new Point[4];
int x = 0;
while (x <= 3)
{
var tempx = centerx + 1; //add 1 to centerx
var tempy = centerx - 1; //subtrat 1 to centery
int y = 0;
if (y < newcoor.Count() - 1 && newcoor[y].X == tempx && newcoor[y].Y == tempy) // compare if there is a Point in the List that is equal with the (tempx,tempy) coordinate
{
vector[x].X = tempx;// store the coordinates
vector[x].Y = tempy;
}
break; // this is what I don't understand, I want to exit the loop immediately if the if-condition is true. And add 1 to x so the while loop will update.
}
尝试新代码:
for (int y = 0; y < newcoor.Count() - 1; y++)
{
var tempx = centerx + 1;
var tempy = centery - 1;
for (int x = 0; x < newcoor.Count() - 1; x++)
{
if (newcoor[y].X == tempx && newcoor[y].Y == tempy)
{
//vectorPoints.Add(new Point(tempx,tempy));
MessageBox.Show("success");
}
}
}
但没有消息框成功显示,这意味着没有匹配。但必须有。
所有我需要的是4输出,这就是为什么我有条件而(x <= 3)
更新
我的中心x = 30,中心= 28
这是我的清单:
我想要做的是将1添加到centerx ,减去1到中心
从原来的centerx = 30和centery = 28,它应该是
(31,27) (32,26) (33,25) (34,24) (35,23)&lt; -----这应该是我的列表中具有相同值的那个,如上图所示。
答案 0 :(得分:0)
不知道你在这里想要什么,但无论如何我有几个问题可以发现;
事实上,tempx
和tempy
在每个循环中都是相同的值,因为循环中的任何内容都不会操纵centerx
或centery
。
其次,循环将在第一次运行时退出,因为break语句不在if {..}
块内。也许你的意思;
if (y < newcoor.Count() - 1 && newcoor[y].X == tempx && newcoor[y].Y == tempy)
{
vector[x].X = tempx;// store the coordinates
vector[x].Y = tempy;
break; // <-- needs to be inside the if{..} block
}