Ciklų kūrimas programavimo kalbomis yra funkcija, kuri palengvina komandų / funkcijų rinkinio vykdymą pakartotinai, o kai kurios sąlygos įvertinamos kaip teisingos. „Java“ siūlo tris būdus, kaip vykdyti kilpas. Nors visi būdai teikia panašias pagrindines funkcijas, skiriasi jų sintaksė ir būklės tikrinimo laikas.
java pateikia trijų tipų sąlyginius sakinius, šis antrasis tipas yra ciklas.
- o ciklas: Nors kilpa yra valdymo srauto sakinys, leidžiantis pakartotinai vykdyti kodą, remiantis tam tikra Būlio sąlyga. Ciklas while gali būti laikomas pasikartojančiu if teiginiu.
Sintaksė:
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++;> > }> > }> }> |
>
>Išvestis
pirminių skaičių programa java
0 1 2 3 4 5 6 7 8 9 10>
- Struktūrinė schema:
- Nors ciklas prasideda tikrinant Būlio sąlygą. Jei jis įvertintas kaip tiesa, tada ciklo korpuso teiginiai vykdomi, priešingu atveju vykdomas pirmasis po ciklo einantis sakinys. Dėl šios priežasties jis taip pat vadinamas Įėjimo valdymo kilpa
- Kai sąlyga įvertinama kaip teisinga, ciklo korpuse esantys teiginiai vykdomi. Paprastai teiginiuose yra kintamojo, kuris apdorojamas kitai iteracijai, atnaujinimo reikšmė.
- Kai sąlyga tampa klaidinga, ciklas baigiasi, o tai reiškia jos gyvavimo ciklo pabaigą.
- kilpai: for loop pateikia glaustą ciklo struktūros rašymo būdą. Skirtingai nuo while ciklo, teiginys for sunaudoja inicijavimą, sąlygą ir padidinimą/sumažinimą vienoje eilutėje, taip užtikrinant trumpesnę, lengvai derinamą ciklo struktūrą.
Sintaksė:
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);> > }> > }> }> |
>
>Išvestis
0 1 2 3 4 5 6 7 8 9 10>
- Struktūrinė schema:
- Inicijuojimo sąlyga: čia inicijuojame naudojamą kintamąjį. Tai žymi for ciklo pradžią. Jau deklaruotas kintamasis gali būti naudojamas arba kintamasis gali būti deklaruojamas, tik vietinėje cikle. Bandymo sąlyga: naudojama kilpos išėjimo sąlygai patikrinti. Ji turi grąžinti loginę reikšmę. Tai taip pat yra Įėjimo valdymo kilpa nes sąlyga patikrinama prieš vykdant ciklo sakinius. Teiginio vykdymas: Kai sąlyga įvertinama kaip teisinga, ciklo korpuse esantys teiginiai vykdomi. Didinimas / mažinimas: naudojamas kintamajam atnaujinti kitai iteracijai. Ciklo pabaiga: kai sąlyga tampa klaidinga, ciklas baigiasi, pažymėdamas jos gyvavimo ciklo pabaigą.
- daryti kol: „do while“ ciklas yra panašus į ciklo while, tik tas skirtumas, kad jis patikrina būklę po teiginių vykdymo, todėl yra pavyzdys Išeikite iš valdymo kilpos.
Sintaksė:
do { statements.. } while (condition);>
Java
pavasario batų architektūra
/*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> );> > }> }> |
>
>Išvestis
0 1 2 3 4 5 6 7 8 9 10>
- Struktūrinė schema:
- do while ciklas prasideda teiginio (-ų) vykdymu. Pirmą kartą nėra jokios būklės tikrinimo.
- Atlikus teiginius ir atnaujinus kintamojo reikšmę, tikrinama, ar sąlyga yra teisinga ar klaidinga. Jei jis įvertintas kaip tiesa, prasideda kita ciklo iteracija.
- Kai sąlyga tampa klaidinga, ciklas baigiasi, o tai reiškia jos gyvavimo ciklo pabaigą.
- Svarbu pažymėti, kad ciklas do-while vykdys savo sakinius bent vieną kartą prieš patikrinant bet kokią sąlygą, todėl yra išėjimo valdymo ciklo pavyzdys.
Kilpų spąstai
- Begalinis ciklas: Viena iš dažniausiai pasitaikančių klaidų diegiant bet kokį kilpą yra ta, kad ji gali niekada nepasitraukti, ty ciklas veikia begalinį laiką. Taip atsitinka, kai būklė dėl kokios nors priežasties nepavyksta. Pavyzdžiai: Infinite for loop :
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > for> (;;) {> > }> > }> }> |
>
>
begalinis while ciklas:
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.> > for> (> int> i => 5> ; i !=> 0> ; i -=> 2> )> > {> > System.out.println(i);> > }> > int> x => 5> ;> > // infinite loop because update statement> > // is not provided.> > while> (x ==> 5> )> > {> > System.out.println('In the loop');> > }> > }> }> |
>
>
Kitas spąstas yra tai, kad galite ką nors įtraukti į savo kolekcijos objektą per kilpą ir gali pritrūkti atminties. Jei bandysite vykdyti toliau pateiktą programą, po kurio laiko bus pašalinta iš atminties išimtys.
modemas vs maršrutizatorius
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); } } }> |
>
dalinis latekso darinys
>
Išvestis:
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)>
Įdėta kilpa:
Įdėtas ciklas reiškia kilpos sakinį kito ciklo sakinyje.
Naudojami įvairūs kilpų deriniai dėl kilpa, kol kilpa, daryti, kol kilpa.
Pvz., 1 Įdėta kilpai
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();> > }> > }> }> |
>
>Išvestis
0 0 1 1 2 2>
Pvz., 2 Įdėta, kai ciklas
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> ;> > }> > }> }> |
>
>Išvestis
123 123 123>
Pvz., 3 Įdėtas do while ciklas
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>= eilutė);> > column => 1> ;> > do> {> > System.out.print(column +> ' '> );> > column++;> > }> while> (column <=> 5> );> > System.out.println(> ' '> );> > row++;> > }> while> (row <=> 5> );> > }> }> |
>
>Išvestis
atsitiktinis skaičius nuo 1 iki 10
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>
Pvz., 4 Įdėtas while ir for ciklas
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;> > }> > }> }> |
>
>Išvestis
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>