Cum se creează o buclă într-un obiect java. Buclă infinită pentru (Java). Exemple și descriere: for – bucla Java

O buclă Java While Do este o instrucțiune care vă permite să rulați aceeași bucată de cod de mai multe ori. Această buclă poate fi folosită pentru a repeta acțiuni atunci când sunt îndeplinite condițiile.

While Loop

Bucla while este cel mai simplu de construit în limbajul Java. Constă dintr-o cheie while, o condiție de buclă și un corp de buclă:

while (condiție) ( // corpul buclei )

Fiecare rulare separată a corpului buclei este considerată o iterație. Înainte de fiecare iterație, condițiile buclei sunt evaluate. Corpul său este executat numai dacă condiția buclei este evaluată la true .

Iterațiile buclei schimbă ceva și, la un anumit moment, evaluarea condiției returnează false , moment în care bucla se termină. O buclă a cărei condiție nu returnează niciodată false este executată de un număr infinit de ori. Astfel de cicluri sunt numite nesfârșite.

Exemplu

int num = 0; în timp ce (num< 10) { System.out.println(num); num++; }

Acest exemplu tipărește numerele de la 0 la 9. Să parcurgem codul pas cu pas. Mai întâi inițializam variabila num cu o valoare de 0. Acesta va fi contorul de bucle. Când programul ajunge la while , sunt evaluate condițiile buclei. În cazul nostru 0< 10 возвращает значение true и исполняется тело цикла. Внутри цикла выводится переменная num , а затем увеличивается на 1 . На этом завершается первая итерация.

După prima „rulare”, condiția buclei Java While este evaluată a doua oară. 1< 10 по-прежнему возвращает true , после чего запускается следующая итерация цикла. Один и тот же процесс повторяется несколько раз.

Iterația finală începe când valoarea lui num este egală cu 9 . Contorul buclei este afișat pentru ultima dată, iar valoarea este crescută la 10. De data aceasta, o nouă iterație nu poate fi începută deoarece condiția buclei este evaluată la false . Deoarece 10 nu este mai puțin de 10.

Astfel, bucla rulează atâta timp cât condiția buclei este îndeplinită. Înarmat cu aceste cunoștințe, puteți crea bucle mai complexe și mai funcționale. Să repetăm ​​matricea:

Nume șiruri = ("Doc", "Dopey", "Bashful", "Grumpy", "Sneezy", "Sleepy", "Happy"); indice int = 0; în timp ce (index< names.length) { System.out.println(names); index++; }

Conceptul acestui exemplu este similar cu cel anterior. Inițializam contorul de bucle și iterăm prin matrice până când toate elementele sunt tipărite. Ca rezultat, iterarea peste matrice este un caz destul de comun, iar Java are o construcție mai bună pentru aceasta: bucla For.

bucla do-while

Bucla Java while do este similară cu while , dar are o diferență semnificativă: spre deosebire de while , condiția este verificată la sfârșitul fiecărei iterații. Aceasta înseamnă că bucla do-while este întotdeauna executată cel puțin o dată:

do ( // corpul buclei ) while (condiție);

Exemplu

do-while execută mai întâi corpul buclei și apoi evaluează condițiile acesteia. În funcție de rezultatul obținut, bucla se oprește sau începe următoarea iterație. Să ne uităm la un joc simplu „ghici numele”:

Scanner scanner = scaner nou (System.in); Ghicirea șirului; do ( System.out.print("Ghicește numele: "); ghici = scanner.nextLine(); ) while (!"Daffy Duck".egals(ghici)); System.out.println("Felicitări! Mi-ai ghicit numele!");

Acest exemplu, în timp ce Java folosește Scanner pentru a analiza intrarea din system.ini. Acesta este canalul de intrare standard care interacționează cu tastatura în majoritatea cazurilor. Mai simplu spus, citim pur și simplu textul pe care îl introduce jucătorul.

În joc, trebuie să întrebi utilizatorul cel puțin o dată și să faci asta atâta timp cât jucătorul introduce răspunsurile corecte. Bucla do-while este ideală pentru astfel de cazuri. În corpul buclei, obținem valoarea utilizatorului și apoi verificăm corectitudinea răspunsului. Bucla ar trebui să ruleze până când valoarea introdusă de utilizator este egală cu Daffy Duck. Dacă se primește răspunsul corect, bucla se oprește și felicităm jucătorul pentru victoria sa.

În concluzie

Buclele Java while adevărate vă permit să reutilizați bucăți de cod de mai multe ori. Astăzi ni s-au prezentat buclele Java while și do-while. Ele sunt similare prin faptul că verifică condițiile și execută corpul buclei dacă condiția este evaluată la true . Dar, în același timp, au o diferență semnificativă: starea buclei while este verificată înainte de iterație, iar starea buclei do-while este verificată la sfârșitul fiecărei iterații. Aceasta înseamnă că bucla do-while este întotdeauna executată cel puțin o dată.

Traducerea articolului „ Buclele While și Do-While ale Java în cinci minute” a fost pregătit de echipa prietenoasă de proiect.

De la JDK 5, există două forme de buclă for în Java. Prima este forma tradițională, folosită încă de la versiunea originală a Java. Al doilea este noua formă „pentru fiecare”. Ne vom uita la ambele tipuri de bucle for, începând cu forma tradițională.

Forma generală a operatorului tradițional pentru după cum urmează:

Dacă o singură declarație va fi repetată într-o buclă, puteți omite acoladele.

Ciclu pentru funcționează după cum urmează. Când bucla este pornită pentru prima dată, programul se execută initializare parte a ciclului. În general, aceasta este o expresie care stabilește valoarea unei variabile de control al buclei, care acționează ca un contor care controlează bucla. Este important să înțelegeți că expresia initializare executat o singură dată. Programul calculează apoi condiție care ar trebui să fie boolean expresie. De obicei, expresia conditii compară valoarea variabilei de control cu ​​valoarea țintă. Dacă această valoare este adevărată, programul se execută corp ciclu. Dacă este fals, execuția buclei este întreruptă.. Apoi programul se execută corp buclă și numai după aceea piesa este executată repetiţie ciclu. Repetiţie este de obicei o expresie care mărește sau scade valoarea unei variabile de control. Programul repetă apoi bucla, de fiecare dată când trece, mai întâi calculând condiţional expresie, apoi a face corp buclă și executând expresia repetari . Procesul se repetă până la valoarea expresiei conditii nu va deveni fals.

Deoarece majoritatea buclelor folosesc variabilele lor numai în cadrul buclei, bucla pentru permite exprimarea initializare a fost o declarație variabilă completă. Astfel, variabila este limitată la corpul buclei și este invizibilă din exterior.

Iată câteva exemple care explică toate cele de mai sus:

În acest exemplu, variabila i declarat în afara buclei (linia 7), deci este disponibil și după finalizarea acesteia (linia 12).

Din rezultatul acestui program se poate observa că expresia repetari ciclu, și anume incrementul de prefix ( ++i) variabil i executat după ce corpul buclei a fost executat, adică după ce linia 10 a fost executată, care tipărește salutul.

Acest punct este foarte important de înțeles pentru a avea o înțelegere corectă a modului în care funcționează ciclul. pentru.

Acum să ne uităm la rezultatul acestui program cu și fără argumente de linie de comandă:

După cum se poate vedea din rezultatul acestui program, incrementul variabilei i apare după ce ultima comandă din buclă este executată, care tipărește salutul (linia 10).

Acum să declarăm o variabilă în interiorul buclei (for statement):

După cum puteți vedea, Eclipse ne-a semnalat imediat eroarea pe care o are variabila j, declarat pe linia 15, nu este vizibil în afara buclei, deoarece domeniul său de aplicare, sau domeniul de aplicare, se extinde numai la corpul buclei în care a fost declarat.

Pentru ca programul să funcționeze, trebuie să comentați rândul 19.

Ieșirea acestui cod este similară cu rezultatul codului la care tocmai ne-am uitat, cu excepția faptului că, în loc de „Bună,” iese „Bună”. Ei bine, după buclă nu este posibilă afișarea valorii unei variabile j.

Când declarați o variabilă în interiorul unei bucle pentru este necesar să ne amintim următoarea circumstanță importantă: aria și timpul de existență a acestei variabile coincid complet cu aria și timpul de existență a operatorului pentru .

Sintaxa buclei pentru nu se limitează la bucle cu o singură variabilă. Ca și în expresie initializare , iar în expresie repetari poate fi folosit virgulă pentru a separa mai multe expresii initializare Și repetari .

De exemplu:

În acest exemplu în initializare parte a buclei setăm valorile inițiale ale ambelor variabile de control AȘi b. Ambele declarații separate prin virgulă în iterativ părțile sunt executate de fiecare dată când se repetă bucla.

Acest cod generează următoarea ieșire:

Ciclu pentru acceptă mai multe arome care îi sporesc capacitățile și aplicabilitatea. Flexibilitatea acestui ciclu se datorează faptului că cele trei părți ale sale: initializare , verificarea conditiilor Și iterativ nu trebuie utilizat numai în scopul pentru care a fost destinat. De fapt, fiecare dintre secțiunile declarației pentru poate fi folosit în orice scop. De exemplu:

Exemplul este, desigur, puțin derutant, dar în esență este simplu. Prima parte a instrucțiunii inițializează variabila b, al doilea îl verifică, iar al treilea afișează un mesaj pe consolă.

În esență, acest program face același lucru cu argumentele de salut dacă există. Dacă nu sunt acolo, atunci nu scoate nimic. Permiteți-mi să dau imediat un exemplu de rezultat:

După cum se poate vedea din rezultatul acestui program, partea de iterație este executată, după cum sa menționat deja, după ce corpul buclei este executat. În acest caz este operatorul println pe linia 9. Instrucțiunea for din acest cod se întinde pe două rânduri 9 și 10, deoarece este destul de lungă. Am făcut acest lucru pentru a demonstra că fiecare parte a declarației for poate fi folosită în scopuri diferite. De asemenea, este de remarcat faptul că incrementul variabilei i apare pe linia 12 și, de asemenea, stabilește o condiție pentru continuarea sau ieșirea din buclă, care este verificată în linia 9.

Un alt exemplu similar, o buclă for poate fi folosită pentru a itera elementele unei liste legate:

De asemenea, este de remarcat faptul că orice parte a ciclului pentru (initializare, condițieȘi iterativ) sau poți chiar sări peste tot. De exemplu, puteți crea o buclă infinită astfel:

( ;; ){
//ciclu fără sfârșit
}

Este posibil să lipsească o expresie de inițializare sau de iterație, sau ambele:

În acest exemplu initializare Și iterativ expresiile sunt mutate în afara definiției operatorului pentru. Ca urmare, părțile corespunzătoare ale declarației pentru gol.

Pentru a face mai clară secvența de execuție a părților instrucțiunii for, voi da un mic exemplu. Deși nu am studiat încă metodele, sper că ideea acestui program va fi înțeleasă de dvs. Scopul său este de a arăta în mod clar secvența de execuție a tuturor părților instrucțiunii for.

Din rezultatul programului este clar că initializare parte a programului ( metoda initTest().) se execută o singură dată.

Apoi se efectuează verificarea conditii , reprezentat prin metoda condTest().

După verificare conditii , efectuat corp ciclu.

Și după aceea piesa este executată repetiţie , reprezentat prin metoda recTest().

Metoda condTest() verifică condiția de continuare a buclei. În acest caz, variabila i este comparată cu 4 și atâta timp cât variabila i este mai mică de 4, corpul buclei este executat.

Corpul buclei este executat de patru ori, deoarece variabila i a fost inițializată implicit la zero.

Operator pentru fiecare

Începând cu JDK 5, Java poate folosi o a doua formă a buclei for, care implementează o buclă în stil pentru fiecare ("pentru fiecare"). Mergi cu stil pentru fiecare este destinat executării strict secvențiale a acțiunilor repetate în legătură cu colecții de obiecte, cum ar fi matrice. În Java, capacitatea de a utiliza o buclă pentru fiecare implementate prin îmbunătățirea ciclului pentru. Formularul de versiune generală pentru fiecare ciclu pentru are următoarea formă:

for (tip de variabilă de iterație: colecție) instrucțiuni bloc

Tip acesta este tipul de variabilă, variabilă de iterație — numele unei variabile iterative care va prelua succesiv valori de la colecții , de la primul la ultimul. Elementul de colecție specifică colecția peste care se face bucla. Cu bucla pentru Puteți folosi diferite tipuri de colecții, dar deocamdată vom folosi doar matrice, apropo, pe care nu le-am încercat încă, dar cel puțin au existat deja multe exemple cu salutări dintr-o matrice de șiruri, în care argumente de linie de comandă merge.

Într-o notă: operator pentru fiecare se aplică matricelor și claselor care implementează interfața java.lang.Iterable.

La fiecare iterație a buclei, programul preia următorul element al colecției și îl stochează într-o variabilă de iterație. Bucla rulează până când toate elementele colecției au fost preluate.

Deși ciclul se repetă pentruîn stil pentru fiecare este executat până când toate elementele matricei (colecție) au fost procesate; bucla poate fi întreruptă mai devreme folosind operatorul pauză.

Deoarece o variabilă de iterație primește valori dintr-o colecție, tipul acesteia trebuie să se potrivească (sau să fie compatibil cu) cu tipul elementelor stocate în colecție. Astfel, la bucla peste matrice, tipul trebuie să fie compatibil cu tipul de bază al matricei.

Pentru a înțelege motivația utilizării buclelor în stil pentru fiecare , luați în considerare tipul de ciclu pentru, pe care acest stil este destinat să-l înlocuiască.

Să luăm din nou exemplul nostru de argumente de salut din linia de comandă:

Nu este mult mai elegant decât folosirea altor operatori de buclă în acest scop?

De fapt, acest program are o ieșire simplă:

L-am văzut deja de multe ori în diferite versiuni, dar repetiția este mama învățării.

Pentru o claritate completă, să ne uităm la câteva exemple suplimentare.

De fiecare dată când trece bucla, variabilei x i se atribuie automat o valoare egală cu valoarea următorului element din tabloul nums. Astfel, la prima iterație x conține 1, la a doua - 2 etc. Acest lucru simplifică sintaxa programului și elimină posibilitatea de a trece dincolo de matrice.

Rezultatul acestei părți a programului este:

Deși ciclul se repetă pentruîn stil pentru fiecare este executat până când toate elementele matricei au fost procesate; bucla poate fi întreruptă mai devreme folosind operatorul pauză. De exemplu:

În acest exemplu, bucla va rula doar trei iterații, după care bucla va ieși în funcție de starea operatorului dacă, care va declanșa operatorul pauză.

De asemenea, este important să înțelegem că variabila de iterație primește valori din colecție (matrice) la fiecare iterație, prin urmare, chiar dacă valoarea sa este modificată în corpul buclei, atunci la următoarea iterație va lua din nou următoarea valoarea din colectie. Mai mult, modificările sale nu afectează în niciun fel valorile colecției (elementele matrice din acest exemplu).

Acest cod va scoate următoarele:

Orice metodă care returnează o matrice poate fi folosită cu pentru fiecare . De exemplu, clasa String conține o metodă toCharArray care returnează o matrice char. Exemplu:

Acest cod va tipări pur și simplu șirul Hello World!

Aici putem termina cu acești operatori. Singurul lucru care merită menționat este că în partea de inițializare puteți declara doar variabile de același tip, sau inițializați variabile de diferite tipuri, dar pe cele care pot fi turnate într-un singur tip comun conform regulii de turnare a tipului pe care am analizat-o mai devreme.

În cele din urmă, voi da încă câteva exemple de operator avansat pentru. În general, acesta este doar un cod refactorizat al exemplului pe care l-am dat deja.

Nu este adevărat că acest cod a devenit mai lizibil și mai ușor de înțeles decât cel pe care l-am furnizat deja? Sau nu este clar? Ei bine, atunci să ne uităm la un alt exemplu de cod care face același lucru.

Nu e din nou clar?

Ambele coduri produc aceeași ieșire:

Desigur, cu condiția ca argumentele de pe linia de comandă să fie Vasya și Petya.

Aceasta se încheie cu operatorul for și umbra sa foreach.

Ca aproape orice limbaj de programare, Java are instrumente concepute pentru a repeta o anumită bucată de cod din nou și din nou. Astfel de instrumente sunt de obicei numite cicluri. În Java, buclele sunt reprezentate de instrucțiuni precum while și for și variațiile acestora. Buclele sunt de obicei folosite pentru a parcurge matrice unidimensionale și multidimensionale și structuri de date pentru a găsi elemente specifice și a opera în continuare asupra lor. Dar aceasta nu este singura modalitate de a utiliza un instrument precum bucla Java. Pe măsură ce le examinăm, vor fi furnizate exemple de utilizare.

Java while loop: descriere și exemple

While este operatorul de buclă fundamental în Java. Fragmentul de cod inclus în corpul său se va repeta până când condiția expresiei cuprinsă în paranteze după ce satisface valoarea adevărată. Operatorul while are in general urmatoarea forma: while (conditie)(//corp bucla). Odată ce condiția booleană nu mai este adevărată, codul inclus în corpul buclei nu va mai fi executat. Controlul va fi transferat pe linia care vine imediat după aceasta. Dacă corpul buclei conține o singură declarație, atunci puteți omite acoladele. Cu toate acestea, printre programatori este considerată o formă bună de a le seta întotdeauna. Să ne uităm la un exemplu:

Clasă publică whileDemo (

System.out.println („Tipărirea numerelor de la 1 la 10”);

în timp ce (număr<=10) {

System.out.println(număr);

Numărul de variabile declarate inițial are valoarea 1. În continuare vedem o expresie logică, care este inclusă în paranteze după numele operatorului. Dacă valoarea este adevărată, bucla va returna adevărată până când valoarea variabilei de numărare este egală sau mai mică de 10. La fiecare trecere sau iterație, valoarea variabilei va fi incrementată cu 1 și imprimată pe ecranul consolei. Când valoarea variabilei a atins valoarea 11, bucla sa încheiat. Dacă valoarea variabilei de numărare a fost inițial egală cu 11, atunci condiția buclei ar fi falsă. Programul nici nu ar intra în corp. Trebuie remarcat faptul că sintaxa Java vă permite să utilizați o instrucțiune While fără un corp. Luați în considerare următorul exemplu. Să presupunem că aveți două variabile: i=100 și j=200. Ne confruntăm cu sarcina de a calcula media lor aritmetică în mod programatic, în acest scop, putem folosi o buclă „hollow”:

În timp ce(++i<- — j);

Ca rezultat al acestei operațiuni, valoarea oricăreia dintre aceste două variabile va fi egală cu media valorilor lor inițiale. După cum puteți vedea în acest exemplu, bucla a funcționat bine fără corp și a efectuat toate acțiunile necesare în expresia condiționată.

bucla do-while

În exemplele anterioare, dacă expresia condiției a returnat fals, programul a ignorat corpul buclei și a continuat execuția ulterioară. Dar uneori apar situații când codul conținut în corpul buclei trebuie executat cel puțin o dată, indiferent de adevărul expresiei condiției. Cu alte cuvinte, uneori se întâmplă că trebuie să verificați adevărul unei expresii condiționate la început, mai degrabă decât la sfârșitul buclei. O variație a buclei while, denumită în cod do-while, poate oferi funcționalități similare. Are următoarea formă: do (//loop body) while (condiție). După cum puteți vedea, mai întâi corpul buclei este executat aici, iar apoi este verificat adevărul condiției. Acest lucru se face la fiecare iterație. Codul de mai sus va funcționa aproximativ la fel ca și în cazul while. Dar dacă setăm numărul la 11, corpul buclei ar fi încă executat o dată înainte ca instrucțiunea să poată testa adevărul expresiei.

Exemple și descriere: for – bucla Java

Bucla for este o formă de limbaj universală și eficientă în limbajul Java. Până la versiunea 5 a JavaSDK, a existat o singură formă tradițională a declarației for. După aceasta, a apărut unul nou - foreach. Această secțiune se va concentra pe forma tradițională a operatorului. Bucla for din Java arată astfel:

pentru (inti=0; i<10; i++) {//Loop statements to be executed

Înainte ca controlul să fie transferat în codul de la sfârșitul buclei, variabila i este inițializată, care acționează ca un numărător. Apoi, trebuie să verificați expresia condiționată în care contorul a fost comparat cu o anumită valoare. Dacă programul returnează true, corpul buclei este executat. În acest caz, valoarea contorului se modifică cu un pas predeterminat și expresia condiționată este verificată din nou. Acest lucru se întâmplă până când condiția devine falsă. Pentru o mai bună înțelegere, iată un exemplu despre cum funcționează o buclă Java for.

clasa publica ForLoops (

public static void main (Argumente șir) (

valoare_intenționată =11;

pentru )