Java-kielen do-while-silmukka varmistaa, että ohjelma suorittaa ohjeita, kunnes mää­ri­tel­ty lo­pe­tuseh­to täyttyy. Silmukan voi myös yhdistää muihin toi­min­toi­hin.

Mikä on do-while-silmukka?

Do-while-silmukkaa käytetään Java-kielessä suo­rit­ta­maan ja tois­ta­maan käskyä, kunnes mää­ri­tel­ty lo­pe­tuseh­to täyttyy (eli on totta). Vastaavia sil­mu­koi­ta on useim­mis­sa oh­jel­moin­ti­kie­lis­sä, ja niitä käytetään tiettyjen koo­di­loh­ko­jen suo­rit­ta­mi­seen useita kertoja. Silmukka voidaan myös yhdistää muihin funk­tioi­hin. Java-kielessä do-while-silmukka on while-silmukan muunnos.

Mikä on Java-kielen do-while-silmukan syntaksi?

Java-kielessä do-while-silmukan syntaksi on seu­raa­van­lai­nen:

do {
	//statements
}
while(condition);
java

Silmukka alkaa avain­sa­nal­la do, jota seuraa ohjeet tai komento, jotka ohjelman tulee suorittaa. Sulkevien ha­ka­sul­kei­den jälkeen esiintyy avainsana while, joka laukaisee silmukan päät­ty­mi­seh­don. Tämä ehto il­mais­taan aina boolisena lausek­kee­na, mikä tar­koit­taa, että ohjelman lo­gii­kas­sa se ar­vioi­daan joko totta tai epätotta. Yleinen ja hyö­dyl­li­nen esimerkki täl­lai­ses­ta lausek­kees­ta on laskuri-muuttuja, jonka avulla voit määrittää, kuinka monta kertaa silmukka tulee toistaa.

Kuinka silmukka toimii

Kun Java-do-while-silmukka suo­ri­te­taan, ohjelma tar­kas­te­lee silmukan rungon ohjeita ja suorittaa ne. Kun tämä on suo­ri­tet­tu, se tarkistaa lo­pe­tuseh­don. Jos tämä on totta (eli ei vielä täyttynyt), silmukka alkaa alusta ja toistaa kaikki lauseet, kunnes se tar­kis­te­taan uudelleen. Heti kun lo­pe­tuseh­to täyttyy ja on siten epätosi, ohjelma lopettaa silmukan ja jatkaa muun koodin suo­rit­ta­mis­ta.

Esimerkki yk­sin­ker­tai­ses­ta sil­mu­kas­ta

Jotta voimme ha­vain­nol­lis­taa silmukan toimintaa, esit­te­lem­me sen rakenteen yk­sin­ker­tai­sen esimerkin avulla. Seu­raa­vas­sa esi­mer­kis­sä annamme muut­tu­jal­le x arvon 10. Java-ope­raat­to­rin ++ avulla tätä arvoa ko­ro­te­taan yhdellä jo­kai­sel­la kier­rok­sel­la ja se näytetään Java-ko­men­nol­la System.out.println. Loppuehto on arvo 20, joten silmukka toistuu niin kauan kuin x on pienempi kuin 20. Koodi näyttää tältä:

public class Main {
	public static void main(String[] args) {
		int x = 10;
		do {
			System.out.println(x);
			x++;
		}
		while (x < 20);
	}
}
java

Jos suo­ri­tam­me tämän koodin, saamme seuraavan tuloksen:

10
11
12
13
14
15
16
17
18
19
java

Ohjelma suorittaa sitten silmukan uudelleen, mutta tunnistaa x:n arvoksi 20. Koska se ei ole enää pienempi kuin 20, lo­pe­tuseh­to täyttyy ja do-while-silmukka päättyy.

Kuinka luoda ääretön silmukka arvolla true

Boolen lausek­keen true avulla on mah­dol­lis­ta suun­ni­tel­la loputon silmukka do-while-lauseella. Tämä ei lopu koskaan, koska päät­ty­mi­seh­toa ei voida saavuttaa. Silmukan lo­pet­ta­mi­sek­si on käy­tet­tä­vä ma­nu­aa­li­ses­ti yh­dis­tel­mää [Ctrl] + [C]. Vastaava koodi näyttää tältä:

public class Main {
	public static void main(String[] args) {
		do {
			System.out.println("You are in an endless loop.");
		}
		while(true);
	}
}
java

Jos suoritat tämän koodin, saat seuraavan tuloksen:

You are in an endless loop.
You are in an endless loop.
You are in an endless loop.
You are in an endless loop.
You are in an endless loop.
ctrl+c
java

Jos et lopeta silmukkaa ma­nu­aa­li­ses­ti, se jatkaa toi­min­taan­sa.

Do-while- ja while-lauseiden ero

Monessa mielessä Java-kielen do-while-silmukka ja while-silmukka ovat sa­man­lai­sia. Ne eroavat kuitenkin toi­sis­taan yhdessä tärkeässä suhteessa: while-silmukka arvioi lo­pet­ta­mi­se­del­ly­tyk­sen­sä heti alussa, kun taas do-while-silmukka suorittaa aina vähintään yhden kier­rok­sen kokonaan ennen kuin se voi lopettaa. Jos haluat varmistaa, että komennot suo­ri­te­taan vähintään kerran, sinun tulee käyttää do-while-silmukkaa. Jos päätös lo­pet­ta­mi­ses­ta on kriit­ti­nen, harkitse sen sijaan pää­kont­rol­loi­dun while-silmukan käyttöä.

Siirry pää­va­lik­koon