break似乎没有返回上一个循环

时间:2013-08-13 00:56:55

标签: c# for-loop while-loop robotics robot

我正在使用C#编程一个机器人并使用数字罗盘作为方向。我遇到的问题是当它进入它的回转循环时,它不会从它回来。 DragonBoard是我的控制器,我也在说话。这应该如何工作给定设定的标题和时间,它向左或向右转,直到标题匹配然后向前驱动一段时间。我遇到的问题是它会继续前进但是当它进入转弯循环时,它会停留在那里,并且不会返回到循环。任何帮助将不胜感激。

private void drive(int heading, int time)//going to start from kit
{
    int i;

    for (i = 0; i < time;i++ )
    {
        DragonBoard.Write("w");//go forward

        while (int.Parse(bearingTxt.Text) - 1 > heading)
        {
            DragonBoard.Write("a");//turn left
            break;
        }

        while (int.Parse(bearingTxt.Text) +1 < heading)
        {
            DragonBoard.Write("d");//turn right
            break;
        }
    }

    DragonBoard.Write(" ");

    if (listBox1.SelectedIndex < listBox1.Items.Count - 1)
    {
        listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
        decision();
    }

2 个答案:

答案 0 :(得分:1)

这是因为你的中断退出“While循环”而不是for循环......我猜你的while循环只执行一次?为什么你需要的呢?试试这个

 for (i = 0; i < time;i++ )
{
    DragonBoard.Write("w");//go forward

    if (int.Parse(bearingTxt.Text) - 1 > heading)
    {
        DragonBoard.Write("a");//turn left
        break;
    }

    else (int.Parse(bearingTxt.Text) +1 < heading)
    {
        DragonBoard.Write("d");//turn right
        break;
    }
}

答案 1 :(得分:1)

我希望在那里不需要循环;如果有条件,也不需要休息;修改您的代码,如下所示:

for (i = 0; i < time;i++ )
    {
        DragonBoard.Write("w");//go forward

        if(int.Parse(bearingTxt.Text) - 1 > heading)
            DragonBoard.Write("a");//turn left
        else if(int.Parse(bearingTxt.Text) +1 < heading)
            DragonBoard.Write("d");//turn right
     }