Upprepningar: while

I programmering vill man återanvända kod ett antal gånger och då passar bra att upprepa koder i kombinationen med villkorssatser. Det innebär att kod upprepas så länge villkorssatsen är sant eller true. Upprepningar av kod är känd på engelska som loops. I Java finns tre typer av upprepningar: while, do while, och for.

While loop

While loopen upprepar kod så länge ett villkor är uppfyllt. Den enklaste syntaxen är så här:

while (logiskt uttryck, det vill säga villkorssats) {

Kodsatser som upprepas ett antal gånger;

}

eller

Man kan också säga att man inte vet antal gånger som kodsatser ska upprepas. Det kan hända att villkoret uppfylls alla gånger så att kodsatser upprepas oändligt! Man ska vara noggrann och använda alltid begränsningar exempelvis att något upprepas 5 gånger med hjälp av if-satser.

En upprepning som att skicka till skärmen talen från 1 till 10 separerade med kommatecknet:

public class WhileDemo1 {

    public static void main(String[] args) {
        int i = 1;
        while(i <= 10) {
            System.out.print(i + ", ");
            i++;
        }
    }
}

Returnerar: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

Exempel

import java.util.Scanner;

public class EnkelUpprepning {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("Ange antal gånger Java ska hälsa på dig: ");

int a = input.nextInt();

int i = 0;

while (i < a){

System.out.println ("Hej på dig!"); i++;

}

}

}

Returnerar

Ange antal gånger Java ska hälsa dig: 5
Hej på dig!
Hej på dig!
Hej på dig!
Hej på dig!
Hej på dig!

public class EnkelAddition {

public static void main(String[] args) {

int a = 1, sum = 0;
while (a <= 5){

System.out.println ("Additionen " + sum + " + " + a + " = " + (sum + a));

sum++;

a++;

}

}

}

Returnerar:

Additionen 0 + 1 = 1
Additionen 1 + 2 = 3
Additionen 2 + 3 = 5
Additionen 3 + 4 = 7
Additionen 4 + 5 = 9

import java.util.Scanner;

public class AdditionTest {

public static void main(String[] args) {

int tal1 = (int)(Math.random() * 10);
int tal2 = (int)(Math.random() * 10);
Scanner input = new Scanner(System.in);
System.out.print("Vad blir summan " + tal1 + " + " + tal2 + " ? ");
int svar = input.nextInt();
while (tal1 + tal2 != svar){

System.out.print("Fel svar. Försök igen. " + "Vad blir summan " + tal1 + " + " + tal2 + " ? ");
svar = input.nextInt();

}
System.out.println("Rätt!");

}

}

Utdata

Vad blir summan 6 + 4 ? 5
Fel svar. Försök igen. Vad blir summan av 6 + 4 ? 6
Fel svar. Försök igen. Vad blir summan av 6 + 4 ? 9
Fel svar. Försök igen. Vad blir summan av 6 + 4 ? 10
Rätt!

import java.util.Scanner;

public class MagiskaTalet {
public static void main(String[] args) {
// Generera slumpmässigt tal att gissa
int tal = (int)(Math.random() * 101);
Scanner input = new Scanner(System.in);
System.out.println("Gissa det magiska talet mellan 0 och 100");
int gissa = -1;
while (gissa != tal){
// Be användaren matta in en gissning
System.out.print("Ange det magiska talet: ");
gissa = input.nextInt();
if (gissa == tal)
System.out.println("Ja, det magiska talet är " + tal + "!");
else if (gissa > tal)
System.out.println("Ditt tal är större än det magiska talet");
else
System.out.println("Ditt tal är mindre än det magiska talet");
}
}
}
Returnerar:

Gissa det magiska talet mellan 0 och 100
Ange det magiska talet: 35
Ditt tal är större än det magiska talet
Ange det magiska talet: 12
Ditt tal är större än det magiska talet
Ange det magiska talet: 8
Ditt tal är mindre än det magiska talet
Ange det magiska talet: 9
Ja, det magiska talet är 9!

import java.util.Scanner;

public class KontrollTal {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Be användaren matta in det första talet
System.out.print(
"Ange ett heltal (programmet avbryts när du anger talet 0): ");
int tal = input.nextInt();
// Läs av alla tal tills användaren mattar in 0
int sum = 0;
while (tal != 0){
sum += tal;
System.out.print(
"Ange ett heltal (programmet avbryts när du anger talet 0): ");
tal = input.nextInt();
}
System.out.println("Summan av givna tal är: " + sum);
}
}
Returnerar:

Ange ett heltal (programmet avbryts när du anger talet 0): 10
Ange ett heltal (programmet avbryts när du anger talet 0): 12
Ange ett heltal (programmet avbryts när du anger talet 0): 34
Ange ett heltal (programmet avbryts när du anger talet 0): 0
Summan av givna tal är: 56