zoukankan      html  css  js  c++  java
  • 退出2层循环的n种方法

    退出循环的n种方法,你能想出几种?

    1、增加变量,作为退出条件:

    bool dobreak = false;
    for ( ..; !dobreak && ..; .. ) {
       
    for ( ... ) {
         
    if (...) {
             dobreak
    = true;
             
    break;
         
    }
       
    }
    }
    2、使用goto:
    for (;;) 
    {
       
    for (;;)
       
    {
           
    break; /* breaks inner loop */
       
    }
       
    for (;;)
       
    {
           
    goto outer; /* breaks outer loop */
       
    }
    }
    outer
    :;
    3、使用return:
    void do_lots_of_work(void)
    {
     
    int i, j;

     
    for(i=0; i<10 ; i++)
     
    {
       
    for(j=0;j< 10; j++)
       
    {
         
    ..
         
    ..
         
    if(disaster_struck())
         
    return; /* Gets us out of the loops, and the function too. */
       
    }
     
    }
    }
    4、嵌套if语句:
    bool isTerminated = false;

    for (...)
    {
       
    if (!isTerminated)
       
    {
           
    for(...)
           
    {
               
    ...

                isTerminated
    = true;
               
    break;
           
    }
       
    }
       
    else
       
    {
           
    break;
       
    }
    }
    5、使用子函数
    for (int i = 0; i < 10; i++) {
       
    if (timeToStop(i)) break;
    }

    -(bool) timeToStop: (int) i {
       
    for (int j = 0; j < 10; j++) {
           
    if (somethingBadHappens) return true;
       
    }

       
    return false;
    }
    6、使用try...catch:
    @try {
     
    for() {
       
    for() {
           
    @throw ...
       
    }
     
    }
    }
    @catch{
     
    ...
    }
    7、使用if加额外变量:
    for(i=0; i<10 && (done==false); i++)
     
    for(j=0;j< 10; j++){
         
    ..
         
    ..
         
    if(...){done=true; break;}
     
    }
    8、直接修改循环变量:
    for(i=0; i<10 ; i++)
     
    for(j=0;j< 10; j++){
         
    ..
         
    ..
         i
    = 10;
         
    break;
     
    }

  • 相关阅读:
    WPF做的小型音乐播放器升级版
    WPF做的小型下载工具和一点点吐槽
    js小技巧摘录1
    关于浏览器缓存设置
    js高阶函数应用—函数防抖和节流
    ES6中let和闭包
    js高阶函数应用—函数柯里化和反柯里化(二)
    js继承的实现(es5)
    js高阶函数应用—函数柯里化和反柯里化
    前端回答从输入URL到页面展示都经历了些什么
  • 原文地址:https://www.cnblogs.com/encounter/p/2188542.html
Copyright © 2011-2022 走看看