Zankanje v programskih jezikih je funkcija, ki olajša ponavljajoče se izvajanje nabora navodil/funkcij, medtem ko se neki pogoj oceni kot resničen. Java ponuja tri načine za izvajanje zank. Čeprav vsi načini zagotavljajo podobno osnovno funkcionalnost, se razlikujejo po sintaksi in času preverjanja stanja.
java ponuja tri vrste pogojnih stavkov, ta druga vrsta je stavek zanke.
- medtem ko zanka: Zanka while je stavek nadzornega toka, ki omogoča ponavljajoče se izvajanje kode na podlagi danega logičnega pogoja. Zanko while si lahko predstavljamo kot ponavljajoč se stavek if.
Sintaksa:
while (boolean condition) { loop statements... }>
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > int> i=> 0> ;> > while> (i<=> 10> )> > {> > System.out.println(i);> > i++;> > }> > }> }> |
>
>Izhod
0 1 2 3 4 5 6 7 8 9 10>
- Diagram poteka:
- Medtem ko se zanka začne s preverjanjem logičnega pogoja. Če je ovrednoteno kot resnično, se izvedejo stavki telesa zanke, sicer se izvede prvi stavek, ki sledi zanki. Zaradi tega se tudi imenuje Vstopna krmilna zanka
- Ko je pogoj ocenjen kot resničen, se izvedejo stavki v telesu zanke. Običajno izjave vsebujejo posodobljeno vrednost za spremenljivko, ki se obdeluje za naslednjo iteracijo.
- Ko pogoj postane napačen, se zanka prekine, kar pomeni konec njenega življenjskega cikla.
- za zanko: zanka for zagotavlja jedrnat način zapisovanja strukture zanke. Za razliko od zanke while stavek for porabi inicializacijo, pogoj in povečanje/zmanjšanje v eni vrstici, s čimer zagotavlja krajšo strukturo zanke, ki jo je enostavno odpraviti.
Sintaksa:
for (initialization condition; testing condition;increment/decrement) { statement(s) }>
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > for> (> int> i=> 0> ;i<=> 10> ;i++)> > {> > System.out.println(i);> > }> > }> }> |
>
>Izhod
0 1 2 3 4 5 6 7 8 9 10>
- Diagram poteka:
- Inicializacijski pogoj: Tukaj inicializiramo spremenljivko v uporabi. Označuje začetek zanke for. Uporabite lahko že deklarirano spremenljivko ali pa deklarirate spremenljivko, samo lokalno za zanko. Testni pogoj: Uporablja se za testiranje izhodnega pogoja zanke. Vrniti mora logično vrednost. Je tudi an Vstopna krmilna zanka saj se pogoj preveri pred izvedbo stavkov zanke. Izvajanje stavka: Ko je pogoj ovrednoten kot resničen, se stavki v telesu zanke izvedejo. Povečanje/zmanjšanje: Uporablja se za posodabljanje spremenljivke za naslednjo ponovitev. Prekinitev zanke: Ko pogoj postane napačen, se zanka prekine, kar pomeni konec njenega življenjskega cikla.
- delaj medtem: zanka do while je podobna zanki while z le razliko, da po izvedbi stavkov preveri pogoj in je zato primer Izhod iz nadzorne zanke.
Sintaksa:
do { statements.. } while (condition);>
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > int> i=> 0> ;> > do> > {> > System.out.println(i);> > i++;> > }> while> (i<=> 10> );> > }> }> |
>
>Izhod
0 1 2 3 4 5 6 7 8 9 10>
- Diagram poteka:
- zanka do while se začne z izvedbo stavkov. Prvič ni preverjanja nobenega stanja.
- Po izvedbi stavkov in posodobitvi vrednosti spremenljivke se pogoj preveri glede prave ali napačne vrednosti. Če je ocenjeno kot res, se začne naslednja ponovitev zanke.
- Ko pogoj postane napačen, se zanka prekine, kar pomeni konec njenega življenjskega cikla.
- Pomembno je omeniti, da bo zanka do-while izvedla svoje stavke vsaj enkrat, preden se preveri kateri koli pogoj, in je zato primer izhodne nadzorne zanke.
Pasti zank
- Neskončna zanka: Ena najpogostejših napak pri izvajanju katere koli vrste zanke je, da se morda nikoli ne izklopi, to je, da se zanka izvaja neskončno dolgo. To se zgodi, ko pogoj iz nekega razloga ne uspe. Primeri: Neskončna zanka for:
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > for> (;;) {> > }> > }> }> |
>
>
neskončna zanka while:
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > while> (> true> )> > {> > // statement> > }> > > }> }> |
>
>
Java
//Java program to illustrate various pitfalls.> public> class> LooppitfallsDemo> {> > public> static> void> main(String[] args)> > {> > // infinite loop because condition is not apt> > // condition should have been i>0.>>> > }> > }> }> |
>
>
Druga past je, da morda nekaj dodajate v svoj objekt zbirke prek zanke in vam lahko zmanjka pomnilnika. Če poskusite izvesti spodnji program, bo čez nekaj časa vržena izjema pomanjkanja pomnilnika.
Java
//Java program for out of memory exception.> import> java.util.ArrayList;> public> class> Integer1> {> > public> static> void> main(String[] args)> > {> > ArrayList ar => new> ArrayList();> > for> (> int> i => 0> ; i { ar.add(i); } } }> |
>
>
Izhod:
Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.grow(Unknown Source) at java.util.ArrayList.ensureCapacityInternal(Unknown Source) at java.util.ArrayList.add(Unknown Source) at article.Integer1.main(Integer1.java:9)>
Ugnezdena zanka:
Ugnezdena zanka pomeni stavek zanke znotraj drugega stavka zanke.
Obstajajo različne kombinacije uporabe zanke za zanka, medtem zanka, do-while zanka.
Primer 1 Ugnezdena for zanka
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > for> (> int> i => 0> ; i <> 3> ; i++){> > for> (> int> j => 0> ; j <> 2> ; j++){> > System.out.println(i);> > }> > System.out.println();> > }> > }> }> |
>
>Izhod
0 0 1 1 2 2>
Primer 2 Ugnezdena zanka while
Java
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> i => 1> , j => 1> ;> > while> (i <=> 3> ) {> > while> (j <=> 3> ) {> > System.out.print(j);> > j++;> > }> > i++;> > System.out.println(> ''> );> > j => 1> ;> > }> > }> }> |
>
>Izhod
123 123 123>
Primer 3 Ugnezdena do while zanka
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> row => 1> , column => 1> ;> > int> x;> > do> {> > x => 4> ;> > do> {> > System.out.print(> ''> );> > x--;> > }> while> (x>= vrstica);> > column => 1> ;> > do> {> > System.out.print(column +> ' '> );> > column++;> > }> while> (column <=> 5> );> > System.out.println(> ' '> );> > row++;> > }> while> (row <=> 5> );> > }> }> |
>
>Izhod
model tcp ip
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5>
Primer 4 Ugnezdena zanka while in for
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> weeks => 3> ;> > int> days => 7> ;> > int> i => 1> ;> > // outer loop> > while> (i <= weeks) {> > System.out.println(> 'Week: '> + i);> > // inner loop> > for> (> int> j => 1> ; j <= days; ++j) {> > System.out.println(> ' Days: '> + j);> > }> > ++i;> > }> > }> }> |
>
>Izhod
Week: 1 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 2 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 3 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7>