退出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;
 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值