虽然给出了循环错误输出

时间:2014-02-02 08:14:56

标签: c# while-loop points

我有一个点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

这是我的清单:

PointsList

我想要做的是将1添加到centerx 减去1到中心

从原来的centerx = 30和centery = 28,它应该是

(31,27) (32,26) (33,25) (34,24) (35,23)&lt; -----这应该是我的列表中具有相同值的那个,如上图所示。

1 个答案:

答案 0 :(得分:0)

不知道你在这里想要什么,但无论如何我有几个问题可以发现;

事实上,tempxtempy在每个循环中都是相同的值,因为循环中的任何内容都不会操纵centerxcentery

其次,循环将在第一次运行时退出,因为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 
}