While-loopen i Java: villkorsloop som upprepar kod flera gånger


Nyckelord: while-loopen, villkorsloopar, loopar, iterationssatser

While for do loop Java

Den här artikeln kommer gå igenom while-loopen i Java som är en villkorsloop som upprepar en kodsekvens så länge ett givet villkor är uppfyllt. Vi kommer börja grundläggande med att gå igenom hur while-loopen fungerar för att sedan fokusera på att lösa exempeluppgifter.

Vad är en while-loop?

En while-loop i Java är en så kallad villkorsloop. Det innebär att man upprepa en kodsekvens, om och om igen, tills dess att ett villkor är uppfyllt. Med andra ord, man använder while-loopen när man vill upprepa en operation så länge ett villkor är uppfyllt. Istället för att behöva skriva din kod flera gånger om, kan vi istället upprepa ett kodblock flera gånger. Allmänt kan man säga att en while-loop i Java är en upprepning av en eller flera sekvenser som sker så länge ett eller flera villkor är uppfyllda.

While-loopen exekveras om och om igen, så länge som villkoret är uppfyllt (true).

Hur fungerar while-loopen i Java?

I Java använder man while-loopen för att iterera en sekvens av operationer flera gånger. Det vill säga, man upprepar delar av sitt program flera gånger. Detta möjliggör generella och dynamiska program eftersom kod kan återanvändas ett godtyckligt antal gånger. Om antalet iterationer inte är fixerat är det rekommenderat att använda en while-loop.

En while-loop:

  • Är en loop som upprepar en sekvens av operationer ett godtyckligt antal gånger.
  • Upprepar operationerna så länge ett villkor är uppfyllt.
  • Ger generella och dynamiska program eftersom kod kan återanvändas.
  • Lämpar sig bäst när antal iterationer av loopen inte är fixerat.

Flödesschemat i figur 1 nedan visar hur en while-loop fungerar

While-loopen Java
Figur 1: While-loopen i Java illustrerad med ett flödesschema

Låt oss titta på vad det är som händer i flödesschemat

  1. Programsekvensen börjar vid Start och kontrollerar sedan ifall loopens villkor är uppfyllt.
  2. Om villkoret är uppfyllt, true, kommer while-loopen att starta och utföra kodblocket som innehåller en eller flera operationer.
  3. När dessa operationer är slutförda, kommer koden återgå till while-villkoret.
  4. Är villkoret fortfarande uppfyllt, så kommer alla operationer att utföras återigen.

Varför använda en while-loop i Java?

While-loopen i Java används för att iterera över ett kodblock så länge villkoret är sant. Vi använder vanligtvis while-loopen när vi inte vet i förväg hur många gånger det ska upprepas. Vidare, en while-loop kommer att fortsätta tills ett förutbestämt scenario inträffar. Det kan hända omedelbart, eller det kan kräva hundra iterationer. Så antalet loopar styrs av ett resultat, inte ett antal. Till exempel, du kan fortsätta loopen tills användaren av programmet trycker på Z-tangenten och loopen kommer hela tiden att köras tills det händer.

Hur skapar man en while-loop i Java?

While-loopen i Java:

  • Man skapar while-loopen med det reserverade ordet while, följt av ett villkor inom parantes ( )
  • Inom måsvingarna, { }, specificerar man alla operationer som man vill exekvera (utföra) om och om igen, så länge som villkoret är true (uppfyllt)
  • Loopen upprepar sig själv tills dess att villkoret inte längre är uppfyllt, det vill säga, false

Syntax: Deklarera en while-loop i Java

Om vi använder de beståndsdelarna i punktlistan ovan och skriver in i kodeditorn får vi.

while (villkor) {
         
      // Operation / Flera operationer ... 
}

Exempel: While-loopen i Java

Låt oss ta ett par exempel på hur man kan använda en while-loop i Java.

Exempel 1: Skapa en while-loop i Java

Nedanstående exempel visar på hur man kan använda while-loopen för att utföra en eller flera operationer medans ett villkor är uppfyllt.

// Deklarerar en variabel med namnet i, som får värdet 0 
int i = 0;                                 

// Så länge "i" är mindre än 5, ska loppen köras.
while(i < 5){                              
   System.out.println("Hello, World!");    
   
   // Öka variabeln i varje steg, i = i + 1
   i++;                                    
}

Vidare, i det här exemplet skriver man ut Hello, World! så länge villkoret är uppfyllt, det vill säga så länge som variabeln i är mindre än 5. Programmet kommer alltså skriva ut textraden Hello, World! fem gånger och sedan avsluta while-loopen:

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

Notera, vad hade hänt om inte i++ hade funnits i loopen? Just det, då villkoret alltid kommer vara uppfyllt (noll är alltid mindre än fem) så kommer while-loopen inte att avslutas. Programmet kommer då skriva ut Hello, World! för evigt. Detta är en så kallad evighetsloop som vi tog upp i introduktionen till loopar och riskerar att förstöra programmet. Var därför vaksam så att villkoret alltid blir uppfyllt till slut!

Skulle du vilja testa koden i exemplet online kan du göra det genom att klicka på knappen nedan.

Exempel 2: While-loopen för att jämföra två tal

Vi tar ett till relativt enkelt exempel. Det programmet ska göra är att:

  • Ta två tal, ett stort, som vi namnger large, och ett mindre, som vi namnger small. Båda talen är slumpmässigt valda för att visa exemplet
  • Använda en While-loop som ska skriva ut värdet för båda talen så länge det stora (large) talet är större än det mindre (small) talet.
  • Vid varje iteration i while-loopen så ska vi dividera det stora talet med två, medans vi ska multiplicera mindre talet med två.
public static void main(String[] args) {
    int large = 2345;
    int small = 3;

    while (large > small){
        System.out.println("Large = " + large + " och " + "Small = " + small);
        large = large / 2;
        small = small * 2;
   }
}

Svaret i det här exemplet blir

Large = 2345 och Small = 2
Large = 1172 och Small = 4
Large = 586 och Small = 8
Large = 293 och Small = 16
Large = 146 och Small = 32
Large = 73 och Small = 64

Exempel 3: While-loop som använder ett slumptal

Vi tar ett tredje och avslutande exempel. I det här exemplet ska vi använda klassen random för att generera ett slumptal. Kommer du inte ihåg hur man använder klassen random för att generera slumptal i Java kan du läsa mer om det här.

Det vi vill att vårt program ska göra är:

  • Skapa ett slumptal mellan 0 – 15.
  • Medans det talet inte är lika med 12 ska det nuvarande genererade slumptalet skrivas ut, samt hur långt det nuvarande talet är från 12 i absoluta tal.
  • Avslutningsvis, när vi väl har nått talet 12 så ska programmet avslutas med att skriva ut hur många iterationer det tog att nå målvärdet på 12.
// Importerar klassen Scanner
import java.util.Random;

public class exempel {
        public static void main(String[] args) {

            // Skapar en instans av klassen random
            Random rand = new Random();

            // Skapar ett slumpmässigt heltal
            int randomNum =rand.nextInt(15);
            
            // Variabel för antal iterationer
            int count = 0;
            
            // Så länge slumptalet inte är lika med 12
            while(randomNum != 12){
                
                System.out.println("Talet är: " + randomNum +
                ", det är: " + Math.abs(12 - randomNum) + " från målvärd");
                
                // Uppdatera slumptalet
                randomNum = rand.nextInt(15);
                
                // Öka räknarvaribeln med ett
                count ++;

            }
            
            // Skriv ut antal iterationer 
            System.out.println("Målvärdet tog: " + count + " iterationer");
        }
}

Vidare, i det här fallet blir det svårt att skriva ut vad svaret kommer bli eftersom vi får olika svar varje gång. Men kopiera gärna koden och testa själv.

Vanliga misstag när man använder while-loopen i Java

  • Först och främst, att man hamnar i en evighetsloop. Det kan bero på flera anledningar, men skulle till exempel kunna vara att man glömmer att uppdatera variablerna som är i loopen. Notera att din kompilator kommer avsluta loopen, men det kommer också leda till att ditt program kraschar/avslutas och du får ett felmeddelande.
  • Att glömma att deklarera en variabel som används i while-loopens villkor. Kom ihåg att första gången villkoret kontrolleras är innan du startar körningen av loopens kropp.
  • Ha fel med 1 i antalet iterationer. Vanligtvis beror detta på ett missförhållande mellan while-loopens tillstånd och initieringen av de variabler som används i villkoret. En bra idé att vid längre loopar och/eller större program är att testa loopen i mindre skala innan.

Notera att det var ett par vanliga misstag, det finns självklart fler misstag man kan råka göra

Sammanfattning av while-loopen i Java

En while-loop i Java är en så kallad villkorsloop. Det innebär att man upprepa en kodsekvens, om och om igen, tills dess att ett villkor är uppfyllt. Man skapar while-loopen med det reserverade ordet while, följt av ett villkor inom parantes ( ). Efter det specificerar man alla operationer som man vill exekvera (utföra) innanför måsvingarna, { }.

Vanliga frågor och svar: While-loopen i Java

Vad menas med while-loopens villkor?

Det är det uttryck som loopen kommer att utvärdera. Så länge det uttrycket är uppfyllt så kommer loopen att utföras. Det kan till exempel vara att en variabel ska vara större eller mindre ett givet värde.

Kan man använda while-loopen även om man vet antal iterationer?

Ja självklart. Det går utmärkt att ställa upp ett villkor att while-loopen ska gå igenom kodblocket ett givet antal gånger. Men för det ändamålet brukar det vara enklare att använda for-loopen som vi ska se på nästa sida.

Kan jag använda en while-loop inuti en annan while-loop?

Ja det går bra. Kom bara ihåg att tänka på att looper kan “fastna” i en evighetsloop så att du är uppmärksam så att programmet kan ta sig vidare.

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!