„Bună, Amigo!
— Bună, Ellie.
„Ai studiat deja buclele și asta e grozav”.
"Sunt de acord! Acum nu știu cum să trăiesc fără ei."
"Uneori te poți descurca fără ele... Dar mai des vei avea nevoie de ele. Astăzi vom vorbi despre situația în care trebuie să ieși dintr-o buclă înainte de termen."
„Vrei să spui, când condiția pentru continuarea buclei este adevărată, dar tot trebuie să ieși din buclă?”
„Exact! Uneori sună ca și cum ai fi deja un programator. Oricum, pentru a ieși dintr-o buclă înainte de program, poți folosi declarația break . Aruncă o privire la următorul exemplu:
Cod | Explicaţie |
---|---|
|
Programul va citi o linie de la tastatură, până când introduceți "exit" . |
"Înțeleg. Programul citește linii din consolă. Dacă introduceți "exit"
, atunci isExit
variabila devine true
, condiția buclei va fi , iar bucla se va termina."!isExit
false
"Așa este. Deci, Java are o break
instrucțiune specială care vă permite să simplificați o astfel de logică. Dacă o break
instrucțiune este executată în interiorul unei bucle, atunci bucla se termină imediat. Programul va începe să execute instrucțiunea care urmează buclei. Instrucțiunea este foarte scurtă. :
break;
„Iată cum puteți folosi break
declarația pentru a rescrie exemplul pe care tocmai am discutat:
Cod | Explicaţie |
---|---|
|
Programul va citi o linie de la tastatură, până când introduceți "exit" . |
"Poate că îmi voi aminti asta. Simt că îmi va veni la îndemână."
„Dar break
nu este singura instrucțiune Java care vă permite să controlați comportamentul unei bucle. Java are și instrucțiunea continue
. Dacă executați o continue
instrucțiune în interiorul unei bucle, iterația curentă a buclei se va încheia înainte de program.”
— Ce vrei să spui prin iterație?
„O iterație de buclă este o execuție a corpului buclei. continue
Instrucțiunea întrerupe iterația curentă a buclei, dar, spre deosebire de break
instrucțiune, nu încheie bucla în sine. Instrucțiunea este, de asemenea, scurtă:
continue;
„Deci, continue
instrucțiunea poate fi folosită într-o buclă dacă dorim să „sărim” execuția anumitor iterații ale buclei?”
„Exact. Înțelegi diferența dintre break
și continue
? Dacă trebuie să găsești șapte din 20 de cifre care nu se repetă, ce fel de declarație de întrerupere a buclei și a buclei ai folosi?
"Hmm... aș parcurge toate numerele și dacă aș găsi 7, atunci aș executa un break
."
„Ce se întâmplă dacă trebuie să afișați numere de la 1
până la, 20
cu excepția numerelor care sunt divizibile cu 7
?”
"Ei bine, aici probabil că am nevoie de continue
, deoarece nu vreau să ies din buclă. Dar încă nu prea înțeleg."
"Permiteți-mi să vă arăt cum să rezolvați această problemă. Acesta este cum ar putea arăta acest cod."
Cod | Explicaţie |
---|---|
|
Programul afișează numere de la 1 până la 20 . Dacă numărul este divizibil cu 7 (diviziunea restului cu 7 este 0 ), atunci omitem afișarea numărului. |
"De ce te uiți la mine atât de suspicios, Ellie? Există vreo captură aici?"
„Nu poți fi păcălit, Amigo! Într-adevăr, acest cod nu va funcționa corect . Va afișa primele 6 cifre, iar apoi i
va rămâne pentru totdeauna blocat pe număr 7
. La urma urmei, continue
declarația omite alte două afirmații: System.out.println(i)
și i++
. Ca ca rezultat, odată ce ajungem la valoarea 7
, variabila i
nu se va mai schimba și vom fi într-o buclă infinită. Am scris codul în acest fel intenționat pentru a ilustra o greșeală foarte frecventă."
„Cum o reparăm?”
„Există două opțiuni aici:”
Opțiunea 1: modificați i
înainte de a executa continue
, dar dupăi % 7
Opțiunea 2: crește întotdeauna i
la începutul buclei. Dar atunci i
valoarea de pornire trebuie să fie 0
.
Opțiunea 1 | Opțiunea 2 |
---|---|
|
|
"Excelent! Voi încerca să nu fac această greșeală."
— Îmi voi aminti de promisiunea ta!
GO TO FULL VERSION