logo

Java-silmukat

Kokeile sitä GfG Practicessa Edistyminen' title=

Ohjelmoinnin silmukat sallivat käskyjen suorittamisen useita kertoja ehdon perusteella. Javassa on kolmen tyyppisiä silmukoita, jotka selitetään alla:

1. silmukalle

For-silmukkaa käytetään, kun tiedämme iteraatioiden lukumäärän (tiedämme kuinka monta kertaa haluamme toistaa tehtävän). For-lause sisältää alustusehdon ja lisäyksen/vähennyksen yhdellä rivillä. 

Esimerkki: Alla oleva Java-ohjelma esittelee for-silmukan, joka tulostaa numerot 0-10 yhdelle riville.



Java
// Java program to demonstrates the working of for loop import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i <= 10; i++) {  System.out.print(i + ' ');  }  } } 

Lähtö
0 1 2 3 4 5 6 7 8 9 10 

Syntaksi:

for (alustus; ehto; lisäys/vähennys) {

// Suoritettava koodi

}

Alla oleva kuva esittää for-silmukan vuokaavion:

While-silmukka' title=For -silmukan vuokaavio
  • 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 paikallissilmukaksi.
  • Testausolosuhteet: Sitä käytetään silmukan poistumisehdon testaamiseen. Sen on palautettava looginen arvo. Se on myös Entry Control Loop, koska ehto tarkistetaan ennen silmukkakäskyjen suorittamista.
  • Lausunnon toteutus : Kun ehto on arvioitu todeksi, silmukan rungon lauseet suoritetaan.
  • Lisäys/vähennys : 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.

Huom : For-silmukalla on toinen muoto, joka tunnetaan nimellä Parannettu silmukalle tai (jokaiselle silmukalle).

jaettu merkkijonolla java

Enhanced for loop (jokaiselle)

Tätä silmukkaa käytetään taulukoiden tai kokoelmien iterointiin.

Esimerkki : Alla oleva Java-ohjelma esittelee Enhanced for -silmukan (jokaiselle silmukalle), joka toistaa taulukon ja tulostaa nimiä.

Java
// Java program to demonstrate  // the working of for each loop import java.io.*; class Geeks {  public static void main(String[] args)  {  String[] names = { 'Sweta' 'Gudly' 'Amiya' };  for (String name : names) {  System.out.println('Name: ' + name);  }  } } 

Lähtö
Name: Sweta Name: Gudly Name: Amiya 

Syntaksi:

for (dataType-muuttuja : arrayOrCollection) {

// Suoritettava koodi

}

2. kun Silmukka

While-silmukkaa käytetään, kun haluamme tarkistaa ehdon ennen silmukan rungon suorittamista.

Esimerkki: Alla oleva Java-ohjelma esittelee while-silmukan, joka tulostaa numerot 0-10 yhdelle riville.

Java
// Java program to demonstrates  // the working of while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  int i = 0;  while (i <= 10) {  System.out.print(i + ' ');  i++;  }  } } 

Lähtö
0 1 2 3 4 5 6 7 8 9 10 

Syntaksi:

while (ehto) {

// Suoritettava koodi

}

Alla oleva kuva havainnollistaa while-silmukan vuokaaviota:

mycricketlive
Tee-while-silmukka' loading='lazy' title=Vuokaavio while-silmukasta
  • While-silmukka alkaa Boolen ehdon tarkistuksella. Jos se arvioidaan tosiksi, silmukan runkolauseet suoritetaan, muuten suoritetaan silmukkaa seuraava lause. Tästä syystä sitä kutsutaan myös Entry-ohjaussilmukaksi
  • 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.

3. do-while Loop

Do-while-silmukka varmistaa, että koodilohko suoritetaan ainakin kerran ennen kunnon tarkistamista.

Esimerkki : Alla oleva Java-ohjelma esittelee do-while-silmukan, joka tulostaa numerot 0-10 yhdelle riville.

Java
// Java program to demonstrates  // the working of do-while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  int i = 0;  do {  System.out.print(i + ' ');  i++;  } while (i <= 10);  } } 

Lähtö
0 1 2 3 4 5 6 7 8 9 10 

Syntaksi:

do {

// Suoritettava koodi

} while (ehto);

Alla oleva kuva esittää do-while-silmukan vuokaavion:

' loading='lazy' title=Vuokaavio do-while-silmukasta
  • do while -silmukka alkaa lauseen suorittamisesta. Mitään kuntoa ei tarkisteta ensimmäistä kertaa.
  • Lausuntojen suorittamisen ja muuttujan arvon päivityksen jälkeen ehdon arvo tarkistetaan tosi tai epätosi. Jos se arvioidaan todeksi, 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ä vähintään kerran ennen kuin mikä tahansa ehto tarkistetaan ja on siksi esimerkki poistumisohjaussilmukasta.

Yleisimmät silmukan virheet ja niiden välttäminen

Jos silmukoita ei käytetä oikein, ne voivat aiheuttaa sudenkuoppia ja virheitä, jotka vaikuttavat koodin suorituskyvyn luettavuuteen ja toimivuuteen. Alla on joitain yleisiä silmukoiden sudenkuoppia:

1. Infinite Loops

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

Infinite Loops -tyypit:

  • ääretön Loopille
  • ääretön, kun taas Loop

Esimerkki: Tässä molemmat esimerkit osoittavat äärettömät silmukat.

java-yhteys
Infinite For Loop
// Java program to demonstrate  // the infinite for loop import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 5; i--) {  System.out.println(  'This loop will run forever');  }  } } 
Infinite While Loop
// Java Program to demonstrate  // the infinite while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  while(true)  {  System.out.println(  'Basic example of infinte loop');  }  } } 

Lähtö: Kun suoritat molemmat yllä olevat koodit, saat TLE (Time Limit Exceeded) -virheen.

2. Yksittäiset virheet

Off-by-One -virheet aiheutuvat, kun silmukka suoritetaan yhden tai yhden harvemmin kuin halusit. Se tapahtuu periaatteessa, kun silmukan ehtoa ei ole asetettu oikein.

Esimerkki : Alla oleva Java-ohjelma osoittaa Off-by-One Error -virheen, jossa silmukka suoritetaan 6 kertaa ja odotimme sen ajavan 5 kertaa.

Java
// Java Program to demonstrates Off-by-One Errors import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i <= 5; i++) {  System.out.print(i + ' ');  }  } } 

3. Silmukan sisällä olevien silmukkamuuttujien muokkaaminen

Kun muutamme silmukan ehtoa (kuten i) silmukan sisällä, se voi saada silmukan ohittamaan tietyt iteraatiot tai käyttäytymään tavalla, jota emme odottaneet. Tämä voi johtaa virheisiin tai odottamattomaan toimintaan.

Esimerkki : Alla oleva Java-ohjelma näyttää silmukan sisällä olevan silmukkamuuttujan muokkaamisen, mikä saa silmukan ohittamaan tietyt iteraatiot ja käyttäytymään odottamattomasti.

Java
// Java program demonstrates  // modification in i variable import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 5; i++) {  if (i == 2) {    // Modifies the loop variable and skips  // the next iteration  i++;  }  System.out.println(i);  }  } } 

4. Tyhjä silmukkarunko

Tyhjä silmukan runko syntyy, kun silmukka kirjoitetaan iteroitavaksi, mutta se ei suorita mitään toimintoja silmukan sisällä. Silmukan suorittaminen ilman hyödyllisiä toimintoja sen sisällä voi olla hämmentävää.

Esimerkki: Alla oleva Java-ohjelma esittelee tyhjän silmukan rungon.

Java
// Java program to demonstrates Empty loop body import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 10; i++) {    // Empty body no operations  }  } } 

Tätä varten ei luoda tulosta, koska silmukan runko on tyhjä.

Yhteenvetotaulukko

Silmukan tyyppi

Milloin käyttää

Kuntotarkistus

Toteutetaanko vähintään kerran?

silmukalle

Kun haluat tarkat iteraatiot

Ennen silmukan runkoa Sitä kutsutaan sisääntuloohjatuksi.

ei

kun silmukka

Kun tarvitset kuntotarkastusta ensin.

Ennen silmukan runkoa Sitä kutsutaan sisääntuloohjatuksi.

java kääntää merkkijonon

ei

do-while -silmukka

Kun pitää juosta ainakin kerran

After loop body Sitä kutsutaan Exit-controllediksi.

kyllä

jokaiselle silmukalle

Kun käsittelet kaikki kokoelmaesineet

Sisäisesti hoidettu

ei

Aiheeseen liittyvät viestit:

  • silmukalle
  • kun silmukka
  • do-while -silmukka
Luo tietokilpailu