# Miten Java-kielen do-while-silmukka toimii?

Java-kielen do-while-silmukka varmistaa, että ohjelma suorittaa ohjeita, kunnes määritelty lopetusehto täyttyy. Silmukan voi myös yhdistää muihin toimintoihin.

## Mikä on do-while-silmukka?

Do-while-silmukkaa käytetään Java-kielessä suorittamaan ja toistamaan käskyä, **kunnes määritelty lopetusehto täyttyy** (eli **on** totta). Vastaavia silmukoita on useimmissa ohjelmointikielissä, ja niitä käytetään tiettyjen koodilohkojen suorittamiseen useita kertoja. Silmukka voidaan myös yhdistää muihin funktioihin. Java-kielessä do-while-silmukka on while-silmukan muunnos.

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

Java-kielessä do-while-silmukan syntaksi on seuraavanlainen:

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

Silmukka alkaa avainsanalla `do`, jota seuraa ohjeet tai komento, jotka ohjelman tulee suorittaa. Sulkevien hakasulkeiden jälkeen esiintyy avainsana `while`, joka laukaisee silmukan päättymisehdon. Tämä ehto ilmaistaan aina **boolisena lausekkeena**, mikä tarkoittaa, että ohjelman logiikassa se arvioidaan joko totta tai epätotta. Yleinen ja hyödyllinen esimerkki tällaisesta lausekkeesta on laskuri-muuttuja, jonka avulla voit määrittää, kuinka monta kertaa silmukka tulee toistaa.

## Kuinka silmukka toimii

Kun Java-do-while-silmukka suoritetaan, ohjelma tarkastelee silmukan rungon ohjeita ja suorittaa ne. Kun tämä on suoritettu, se tarkistaa lopetusehdon. Jos tämä on totta (eli ei vielä täyttynyt), silmukka alkaa alusta ja toistaa kaikki lauseet, kunnes se tarkistetaan uudelleen. Heti kun lopetusehto täyttyy ja on siten epätosi, ohjelma **lopettaa silmukan** ja jatkaa muun koodin suorittamista.

## Esimerkki yksinkertaisesta silmukasta

Jotta voimme havainnollistaa silmukan toimintaa, esittelemme sen rakenteen yksinkertaisen esimerkin avulla. Seuraavassa esimerkissä annamme muuttujalle `x` arvon 10. Java-operaattorin `++` avulla tätä arvoa korotetaan yhdellä jokaisella kierroksella ja se näytetään Java-komennolla `System.out.println`. Loppuehto on arvo 20, joten silmukka toistuu niin kauan kuin x on pienempi kuin 20. Koodi näyttää tältä:

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

Jos suoritamme tämän koodin, saamme seuraavan tuloksen:

```java
10
11
12
13
14
15
16
17
18
19
```

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

## Kuinka luoda ääretön silmukka arvolla `true`

Boolen lausekkeen `true` avulla on mahdollista suunnitella **loputon silmukka** do-while-lauseella. Tämä ei lopu koskaan, koska päättymisehtoa ei voida saavuttaa. Silmukan lopettamiseksi on **käytettävä manuaalisesti yhdistelmää \[Ctrl\] + \[C\]**. Vastaava koodi näyttää tältä:

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

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

```java
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
```

Jos et lopeta silmukkaa manuaalisesti, se jatkaa toimintaansa.

## Do-while- ja while-lauseiden ero

Monessa mielessä Java-kielen do-while-silmukka ja while-silmukka ovat samanlaisia. Ne eroavat kuitenkin toisistaan yhdessä tärkeässä suhteessa: while-silmukka arvioi lopettamisedellytyksensä **heti alussa**, kun taas do-while-silmukka suorittaa aina **vähintään yhden kierroksen kokonaan** ennen kuin se voi lopettaa. Jos haluat varmistaa, että komennot suoritetaan vähintään kerran, sinun tulee käyttää do-while-silmukkaa. Jos päätös lopettamisesta on kriittinen, harkitse sen sijaan pääkontrolloidun while-silmukan käyttöä.


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-do-while-silmukka/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-do-while-silmukka/) for AI/LLM consumption.