2013-11-27 37 views
0

如何給continue語句強制外循環的下一次迭代發生?Contine語句強制外循環的下一次迭代發生

for(i=0;i<strlen(name1);i++) // Outer Loop 
    { 
     for(j=0;j<strlen(name2);j++) //inner Loop 
     { 
      if(name1[i]==name2[j]) 
      { 
       name1[i]='*'; 
       continue; //If i continue here the inner loops's newxt iteration takes place 
      } 
     }  
    } 

回答

1
for(i=0;i<strlen(name1);i++) // Outer Loop 
    { 
     for(j=0;j<strlen(name2);j++) //inner Loop 
     { 
      if(name1[i]==name2[j]) 
      { 
       name1[i]='*'; 
       break; // <-- break out of loop 
      } 
     }  
    } 
+1

是的,你是對的。 –

+2

他們你應該接受答案 – Benedictus

0

通過極致的答案是你的代碼完全正確的。 &那應該被接受的答案。我只想解決一個案例,當內部循環後面有更多代碼時。

原始代碼:

for(i=0;i<strlen(name1);i++) // Outer Loop 
{ 
    for(j=0;j<strlen(name2);j++) //inner Loop 
    { 
     if(name1[i]==name2[j]) 
     { 
      name1[i]='*'; 
      continue; //If i continue here the inner loops's newxt iteration takes place 
     } 
    } 
    // <some more code here....> 
} 

將其更改爲:

for(i=0;i<strlen(name1);i++) // Outer Loop 
{ 
    for(j=0;j<strlen(name2);j++) //inner Loop 
    { 
     if(name1[i]==name2[j]) 
     { 
      name1[i]='*'; 
      break; // come out of inner loop. 
     } 
    } 
    if(j<strlen(name2)) // check if there was a conditional break. 
     continue; // skip remaining code, after inner for loop. 
    // <some more code here....> 
} 

注1:儘量避免在for循環strlen()檢查,如果可能的話。它每次迭代都會被評估。如果字符串不會改變,您可以評估一次,存儲在一個變量中(例如len_name1)&使用該變量作爲i<len_name1,而不是循環中的函數調用。

NOTE2:如果你想在2 break語句來區分在內的多個break語句for循環&,你可以設置一個標誌基於其價值荷蘭國際集團&只是break之前,而不是使用if(j<strlen(name2))