三重循环如何直接从最内层退到第一层?因break只能直接退到第二层。例如
                for (i = 1; i <= bn; i++)
                {
                        for (j = 1; j <= cc - 1; j++)
                        {
                            for (l = j + 1; l <= cc; l++)
                            {
                                if (k2 >= 2 && k3 >= 1)
                                {
                                    break;
                                }
                            }
                        }
                    
                }

解决方案 »

  1.   


                    bool flag=false;
                    for (i = 1; i <= bn; i++) 
                    { 
                            for (j = 1; j <= cc - 1; j++) 
                            { 
                                for (l = j + 1; l <= cc; l++) 
                                { 
                                    if (k2 >= 2 && k3 >= 1) 
                                    { 
                                        flag=true;
                                        break; 
                                    } 
                                } 
                                if(flag) break;
                            } 
                            if(flag) break;
                        
                    } 
      

  2.   


    必须用bool flag=false;
    不能直接吗
      

  3.   

    goto,只要不超过一个页面的距离,这个东东最好用
      

  4.   

    goto ``` goto  ``goto ```貌似这玩意我这辈子还没用过···
      

  5.   

    goto 还是不用的好 这玩意我老大和我说,顶级高手才用 比较垃圾的也用  所以我一直不怎么用不能直接跳出来的。。 加一个判断标志符已经比较简单了
      

  6.   

    bool continueTask = true;for (i = 1; i <= bn && continueTask; i++)
                    {
                            for (j = 1; j <= cc - 1 && continueTask; j++)
                            {
                                for (l = j + 1; l <= cc && continueTask; l++)
                                {
                                    if (k2 >= 2 && k3 >= 1)
                                    {
                                        continueTask =false;
                                    }
                                }
                            }
                   
                    } 
        
      

  7.   

    建议不要用goto,程序不好懂,将来维护起来麻烦。用习惯了以后工作的时候难改。
      

  8.   

    写一个goto的
    bool isnan;
    input:
    Console.WriteLine("请输入一个数字:");
    int a = Convert.ToInt32(Console.ReadLine());
    if(a<10)
    {
    conlose.write("OK");
    isnan=true;
    }
    else
    {
    conlose.write("NO!");
    isnan=false;
    }
    if(isnan=false){
    goto:input;
    }
      

  9.   

    goto,或者把多重循环拉出来做成一个方法,再用return
      

  10.   

    在break时,将i,j,l的值赋予循环范围之外
      

  11.   

    用“return”阿!
      在循环体中:break是退到所在循环的上级循环(父循环),
                  而“return”则是退出整个循环。
      

  12.   

     void a()
            {
                for (int i = 1; i <= bn; i++)
                    b(i);
            }        void b(int i)
            {
                for (int j = 1; j <= cc - 1; j++)
                {
                    for (int l = j + 1; l <= cc; l++)
                    {
                        if (k2 >= 2 && k3 >= 1)
                            return;
                    }
                }
            }或者 for (int i = 1; i <= bn; i++)
                {
                next:
                    for (int j = 1; j <= cc - 1; j++)
                    {
                        for (int l = j + 1; l <= cc; l++)
                        {
                            if (k2 >= 2 && k3 >= 1)
                                goto next;
                        }
                    }
                }
      

  13.   

    不建议用goto,可以加标志变量或用RETURN
      

  14.   

    这个好,没有用过goto,我想以后也不会用的
      

  15.   

    深层循环内退出用goto也无不妥,深层循环内return,还不如用goto,因其同样不符合结构化程序设计思想,并且代码阅读更困难结构化程序设计的一个要点是:方法只有一个出口试想在复杂的循环中,在任意地方return,这样的代码的可读性一样很差
    个人推荐:大胆使用goto(这是个双刃剑,用好得下点细心的功夫)或者 按楼上诸公的增设标志层层退出(这种符合结构化程序设计思想)
      

  16.   

    goto 本来就有这个用途,只是不要滥用。
    不然导致的后果,理论书和导师们都说了N次咯。
    为啥基本每个高级语言都会有goto,因为底层的构建高手都会用到点goto. 
      

  17.   

    goto:是逐渐被人放弃的用法,不建议使用
    return:我就不明白了,你们敢在循环里直接用return?这个循环体后面的事情不做了?用return,整个方法就结束了!!
    使用标志才是最正确的方法!!
    参考6楼。
      

  18.   

    是被中国编程人员放弃的用法吧......
    如果像你所说微软又何必多此一举,在.NET框架中还要对它的支持呢!
    程序的可读性固然重要,但该用的时候还是要用的......
      

  19.   

    这里用标志不是很合适,反而让代码变得可读性降低,冗余度提高,而且多一个标志变量就多一个可能出错的机会,这里是用goto一个非常好的地方,但由于这种情况很少,所以goto一般不用,纯计算的地方不多,多少是带有一点逻辑的,会根据逻辑分方法,就如上面我写的分成2个方法,然后一个方法调用另一个,另一个return回第一个,好比是第一个是主逻辑,而第2个方法是在满足主逻辑前提下去调用另一个逻辑方法,而如果没有逻辑,纯运算,这里用goto也未尝不可,不过我实际中还没遇到过非要用goto的有时换种结构写法(不是标志)就消去了goto
      

  20.   

    在break前面加句j = cc;就退到第一个循环了。