Brugen af break og continue

greenspun.com : LUSENET : Grundlfggende Programmering, F2000 : One Thread

I lfrebogen, 2. udgave, side 140 - 141 ster der, at break og continue bxr undges i loops. Der henvises til bogens hjemmeside for nfrmere forklaring. Imidlertid kan jeg ikke finde noget stof om emnet der - det hxrer vist til fremtidsplanerne! -og se er spxrgsmelet: Hvorfor undge break og continue i loops? Som jeg ser det, kan disse statements spare en for en masse arbejde med at skrive det helt rigtige loop?!

mvh Holger

-- Holger B. Nielsen (hbn@mail.dk), February 20, 2000

Answers

Som bogen siger, kan man skrive de samme lxkker uden brug af break og continue, se de gxr ikke at man kan lxse flere programmer. Generelt er programmer med break og continue i lxkker svfrrere at lfse end lxkker uden brug af break og continue. Der findes selvfxlgelig undtagelser og i sidste ende er det op til dig - hvad synes du selv er pfnest. Jeg har aldrig selv skrevet en lxkke hvor jeg har benyttet break eller continue.

F.eks. mener jeg at lxkke 1 pfnere end lxkke 2 nedenfor - de lxser prfcis samme problem:

public class LoopsBreakContinue { 
  public static void main(String[] args) { 
    System.out.println("Lxkke nummer 1"); 
    int i = 1; 
    while(i<10) { 
      System.out.println(i); 
      i = i +1; 
      if (i<=5) 
        continue; 
      else break; 
    } 

System.out.println("Lxkke nummer 2"); i = 1; while(i<=5) { System.out.println(i); i = i +1; }

} }

Nedenfor er to mere generelle eksempler pe hvorledes man kan omskrive lxkker med henholdsvis break og continue.

while (udtryk1) { 
  ordre; 
  ordre; 
  if (udtryk2) 
    break; 
  ordre; 
  ordre; 
} 

kan erstattes af

boolean done = false; while (udtryk1 && !done) { ordre; ordre; if (udtryk2) done = true; else { ordre; ordre; } }

og

while (udtryk1) { 
  ordre; 
  ordre; 
  if (udtryk2) 
    continue; 
  ordre; 
  ordre; 
} 

kan erstattes af

while (udtryk1) { 
  ordre; 
  ordre; 
  if (!udtryk2) { 
    ordre; 
    ordre; 
  } 
} 

Happy Hacking

-- Niels Hallenberg (nh@itu.dk), February 24, 2000.


Moderation questions? read the FAQ