Silmukat Javassa

Silmukat Javassa

Silmukka ohjelmointikielissä on ominaisuus, joka helpottaa käskyjen/toimintojen suorittamista toistuvasti, kun taas jotkin olosuhteet muuttuvat todeksi. Java tarjoaa kolme tapaa suorittaa silmukoita. Vaikka kaikki tavat tarjoavat samanlaisia ​​perustoimintoja, ne eroavat syntaksista ja kunnontarkistusajasta.

java tarjoaa kolmenlaisia ​​ehdollisia lausekkeita, tämä toinen tyyppi on silmukkalause.

  • while-silmukka: While-silmukka on ohjausvuon käsky, joka sallii koodin suorittamisen toistuvasti tietyn Boolen ehdon perusteella. While-silmukkaa voidaan pitää toistuvana if-lauseena.

Syntaksi :

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++;> > }> > }> }>

Lähtö

0 1 2 3 4 5 6 7 8 9 10 
  • Vuokaavio: for-loop-java
    • While-silmukka alkaa Boolen ehdon tarkistuksella. Jos se arvioidaan tosi, silmukan runkolauseet suoritetaan muuten silmukkaa seuraava ensimmäinen lauseke suoritetaan. Tästä syystä sitä kutsutaan myös Sisääntulon ohjaussilmukka
    • Kun ehto on arvioitu todeksi, silmukan rungon lauseet suoritetaan. Yleensä käskyt sisältävät päivitysarvon käsiteltävälle muuttujalle seuraavaa iteraatiota varten.
    • Kun ehdosta tulee epätosi, silmukka päättyy, mikä merkitsee sen elinkaaren loppua.
  • silmukalle: for loop tarjoaa tiiviin tavan kirjoittaa silmukkarakenne. Toisin kuin while-silmukka, for-käsky kuluttaa alustuksen, ehdon ja lisäyksen/vähennyksen yhdellä rivillä, mikä tarjoaa lyhyemmän, helposti korjattavan silmukan rakenteen.

Syntaksi:

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);> > }> > }> }>

Lähtö

0 1 2 3 4 5 6 7 8 9 10 
  • Vuokaavio:
    tehdä, kun
      Alustusehto: Tässä alustetaan käytössä oleva muuttuja. Se merkitsee for-silmukan alkua. Jo ilmoitettua muuttujaa voidaan käyttää tai muuttuja voidaan ilmoittaa, vain paikallissilmukalle. Testausehto: Sitä käytetään silmukan poistumisehdon testaamiseen. Sen on palautettava looginen arvo. Se on myös an Sisääntulon ohjaussilmukka koska ehto tarkistetaan ennen silmukkakäskyjen suorittamista. Lausekkeen suoritus: Kun ehto on arvioitu todeksi, silmukan rungossa olevat lauseet suoritetaan. Increment/Decrement: Sitä käytetään muuttujan päivittämiseen seuraavaa iteraatiota varten. Silmukan päättäminen: Kun ehdosta tulee epätosi, silmukka päättyy ja merkitsee sen elinkaaren loppua.
  • tehdä, kun: do while -silmukka on samankaltainen kuin while-silmukka sillä erolla, että se tarkistaa ehdon lauseiden suorittamisen jälkeen ja on siksi esimerkki Poistu ohjaussilmukasta.

Syntaksi:

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> );> > }> }>

Lähtö

0 1 2 3 4 5 6 7 8 9 10 
  • Vuokaavio:
    • do while -silmukka alkaa lauseen (käskyjen) suorittamisesta. Mitään kuntoa ei tarkisteta ensimmäistä kertaa.
    • Lausekkeiden suorittamisen ja muuttujan arvon päivityksen jälkeen ehdon arvo tarkistetaan tosi tai epätosi. Jos sen arvoksi arvioidaan tosi, seuraava silmukan iteraatio alkaa.
    • Kun ehdosta tulee epätosi, silmukka päättyy, mikä merkitsee sen elinkaaren loppua.
    • On tärkeää huomata, että do-while-silmukka suorittaa käskynsä ainakin kerran ennen kuin mikä tahansa ehto tarkistetaan, ja siksi se on esimerkki poistumisohjaussilmukasta.

Loopsin sudenkuopat

    Infinite loop: Yksi yleisimmistä virheistä kaikenlaisen silmukan toteutuksessa on, että se ei ehkä koskaan poistu, eli silmukka toimii äärettömän ajan. Tämä tapahtuu, kun tila epäonnistuu jostain syystä. Esimerkkejä: Infinite for loop :

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > for> (;;) {> > }> > }> }>

ääretön while-silmukka:

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');> > }> > }> }>

Toinen sudenkuoppa on, että saatat lisätä jotain kokoelmaobjektiin silmukan kautta ja muisti voi loppua. Jos yrität suorittaa alla olevan ohjelman, jonkin ajan kuluttua poistetaan muistin loppumisesta poikkeus.

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); } } }>

Lähtö:

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) 

Sisäkkäinen silmukka:

Sisäkkäinen silmukka tarkoittaa silmukkakäskyä toisen silmukkakäskyn sisällä.

On olemassa erilaisia ​​​​silmukkayhdistelmiä varten silmukka, sillä aikaa silmukka, tehdä, kun silmukka.

Esim.1 Sisäkkäinen silmukalle

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();> > }> > }> }>

Lähtö

0 0 1 1 2 2 

Esim.2 Sisäkkäinen while-silmukka

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> ;> > }> > }> }>

Lähtö

123 123 123 

Esim.3 Sisäkkäinen do while -silmukka

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>= rivi);> > column => 1> ;> > do> {> > System.out.print(column +> ' '> );> > column++;> > }> while> (column <=> 5> );> > System.out.println(> ' '> );> > row++;> > }> while> (row <=> 5> );> > }> }>

Lähtö

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 

Esim.4 Sisäkkäinen while- ja for-silmukka

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;> > }> > }> }>

Lähtö

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