Les boucles en Java exécutent un code un nombre défini de fois jusqu’à ce que la condition spécifiée soit remplie.

La fréquence de répétition de la boucle est définie dans la condition de la boucle. En java ou dans les autres langages de programmations, il existe plusieurs types de boucles.

Afin de choisir la bonne boucle pour votre programme, les particularités des boucles doivent être connues et comprises.

Les boucles en Java

La boucle for de Java

La boucle for de Java est simple, facile à comprendre et est l’une des boucles les plus couramment utilisées. Elle est souvent utilisée lorsque le nombre d’itérations est déterminé, ou le nombre exact d’itérations/répétitions est déjà connu.

for ( initialisation ; condition; incrémentation/décrémentation ) {  
    	    // le bloc de code de la boucle
    	}

La boucle for en Java nécessite trois expressions :

  • L’initialisation : indique le point de départ de la boucle.
  • La condition : détermine quand l’exécution de la boucle doit se terminer. La valeur de retour de la vérification est un booléen, la boucle ne s’exécute que si la condition est vraie.
  • Incrémentation / Décrémentation : détermine si la valeur du compteur doit être incrémentée ou décrémentée après chaque itération.

Voici un exemple qui affiche les chiffres de 1 à 5.

class Test {

    public static void main(String[] args) {
    	int i;
    	for (i = 1; i <= 5; i++) {
    	   System.out.println(i);         
    	}
    }
}

Ce qui donne :

1
2
3
4
5

Prenons un autre exemple, nous allons utiliser la boucle for pour calculer la somme des dix premiers nombres.

class Test {

    public static void main(String[] args) {
    	int sum = 0;
    	for (int i = 1; i <= 10; i++) {
    	     sum = sum + i;
    	}
    	System.out.println("Somme: " + sum);
    }
}

Exécution du code :

Somme: 55

Notez que System.out.println("Somme: " + sum); est à l’extérieur du bloc de code de la boucle for. Essayez de le mettre à l’intérieur pour voir le résultat.

En fait, l’instruction va vous afficher la somme à chaque tour de la boucle.

Somme: 1  // sum=0+1=1 (i=1)
Somme: 3  // sum=1+2=2 (i=1+1=2) 
Somme: 6  // sum=3+3=6 (i=2+1=3)

La boucle while de Java

La boucle while en Java prend une expression/condition et répète le bloc de code de la boucle tant que la condition est remplie. En Java, la boucle while est souvent utilisée lorsque le nombre d’itérations n’est pas spécifié ou n’est pas connu.

while ( condition ) {  
  // le bloc de la boucle
  // incrémentation ou décrémentation
}
  • La condition ou l’expression à vérifier se trouve au début.
  • Si la condition de test est vraie, le code sera exécuté.
  • Si la condition de test est fausse, la boucle va s’arrêter.
  • Si la condition/expression spécifiée est fausse dans la première boucle, le code associé à cette condition ne sera pas exécuté.
  • La valeur de la variable doit être incrémentée ou décrémentée à l’intérieur de la boucle, sinon le code associé à la boucle sera exécuté à l’infini.

Nous allons afficher la valeur de la variable num à la puissance 3 à chaque itération. Voyons donc comment nous pourrons mettre cela en œuvre.

public class Test {
    public static void main(String[] args) {
    	int num = 1;
        while (num <= 5) {          
          System.out.println(num + " à la puissance 3: " + num * num * num);
          num++;
        }          
    }
}

La valeur initiale de num est 1. La boucle while, s’exécute tant que la valeur de num est inférieure ou égale à 5.

1 à la puissance 3: 1
2 à la puissance 3: 8
3 à la puissance 3: 27
4 à la puissance 3: 64
5 à la puissance 3: 125

Prenons un autre exemple. Nous utiliserons les entrées/sorties et les conditions.

Exécutez ce code.

import java.util.*;

class Test {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int choix = 1;
        while (choix == 1) {
            int a;  // La variable que l'utilisateur va saisir

            System.out.println("Saisissez un nombre : ");
            a = s.nextInt();

            if (a % 2 == 0) {
                System.out.println("Votre nombre est pair.");
            } else {
                System.out.println("Votre nombre est impair.");
            }

            System.out.println("Saisissez 1 pour continuer ou 0 pour arrêter.");

            choix = s.nextInt();
        }

        System.out.println("Merci!");
    }
}

La boucle s’exécutera jusqu’à ce que la valeur de la variable choix sera différente de 1.

import java.util.* : l’étoile veut dire que nous importons tout ce qu’il y a dans java.util dans notre programme.

La boucle Java do-while

La boucle do-while est essentiellement identique à la boucle while ; la seule différence est que la boucle do-while s’exécute au moins une fois, quelle que soit la condition spécifiée. Puisque la condition est à la fin.

do { 
  // bloc de code de la boucle 
  // incrémentation / décrémentation
} while ( condition ) ; 

Prenons un exemple.

class Test {

    public static void main(String[] args) {
    	int num = 10;
        do {
          System.out.println(num + " à la puissance 3 : " + num * num * num);
          num++;
        } while (num <= 5); 
    }
}

Exécution du code :

10 à la puissance 3 : 1000

Comme vous pouvez le constater, la boucle a été exécutée malgré que la condition n’est pas remplie.

La boucle imbriquée en Java

Une boucle imbriquée est une boucle qui s’exécute à l’intérieur d’une autre boucle, donc la boucle interne sera le bloc de code de la boucle externe.

Supposons que nous voulons créer un programme qui affichera les joueurs de 3 équipes.

La boucle interne et la boucle externe sont initialisées à 1. La condition de la boucle externe est i<=3 (3 équipes). Alors que pour la boucle interne j<=4 (dans chaque équipe nous avons 4 joueurs). Ici, la boucle externe (des équipes) itère 3 fois et pour chaque itération de la boucle externe, la boucle interne (des joueurs) s’exécutera 4 fois.

class Test {
    public static void main(String[] args) {
        for (int i = 1; i <= 3; i++) {
	    for (int j = 1; j <= 4; j++) {
	        System.out.println("i=" + i + " et" + " j=" + j);
	    }
	    System.out.println("************************");
        }
    }
}

Exécution du code.

i=1 et j=1
i=1 et j=2
i=1 et j=3
i=1 et j=4
************************
i=2 et j=1
i=2 et j=2
i=2 et j=3
i=2 et j=4
************************
i=3 et j=1
i=3 et j=2
i=3 et j=3
i=3 et j=4
************************

Maintenant, nous allons utiliser la boucle imbriquée pour créer une table de multiplication.

class Test {

	public static void main(String[] args) {
        for (int i = 3; i <= 5; i++) {
            System.out.println("Table de multiplication de " + i);
            for (int j = 1; j <= 10; j++) {
                System.out.println(i + "*" + j + "=" + (i * j));
            }
        }
    }
}

Dans la première itération de la boucle externe for , la valeur de i est 3. Dans son bloc, « Table de multiplication de i » est affichée et la boucle for interne est exécutée.

Dans la première itération de la boucle interne, la valeur de i est 3 et celle de j est 1, donc dans son bloc, 3*1=3 est affichée.

Dans la deuxième itération de la boucle interne, la valeur de i est 3 et celle de j est 2, donc dans son bloc, 3*2=6 est affichée.

Puis, jusqu’à la dixième itération de la boucle interne dans laquelle 3*10=30 est affichée.

Ce qui met fin à la première itération de la boucle externe.

Dans les deuxième et troisième itérations de la boucle externe, le même processus est répété avec i égal à 4 et 5 respectivement.

Bref, il n’y a rien de nouveau dans l’imbrication des boucles. La boucle interne est comme toutes les autres instructions dans le bloc de la boucle externe.

Toutefois, notez que les valeurs de i ou la boucle externe représente des lignes et les valeurs de j qui est la boucle interne représente des colonnes.

Prenons un autre exemple classique, qui va afficher à chaque tour de boucle des étoiles dont le nombre sera celui de la colonne.

class Test {

	public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {            
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

Exécution du code.

*
**
***
****
*****

La boucle infinie en Java

Une boucle infinie est une boucle dont la condition est toujours vraie. En conséquence, elle continue d’exécuter son code pour toujours.

Exécutez l’exemple suivant. Pour arrêter la boucle tapez ctrl + c. Sinon, en bas dans la console, cliquez sur le rectangle rouge.

class Test {

	public static void main(String[] args) {
        for (int i = 2; i > 0; i++) {
            System.out.println(i);
        }
    }

Voici un autre exemple.

class Test {

    public static void main(String[] args) {
        for (int i = 12; true; i++) {
            System.out.println(i);
        }
    }
}

Puisque la condition de la boucle est vraie, elle continuera à s’exécuter.

Nous pouvons également créer une boucle infinie en laissant son expression conditionnelle vide. Lorsque l’expression conditionnelle est vide, elle est supposée vraie. Voyons un autre exemple.

class Test {

    public static void main(String[] args) {
        for (int i = 12;; i++) {
            System.out.println("Une boucle infinie");
        }
    }
}

L’instruction break

L’instruction Java break est utilisée pour rompre ou terminer la boucle selon une condition spécifiée. Dans une boucle interne, il arrête uniquement la boucle interne.

class Test {

    public static void main(String[] args) {
        for (int n = 1; n <= 5; n++) {
            System.out.println(n);
            if (n == 2) {
                break;
            }
        }
    }
}

Exécution du code.

1
2

Dans la première itération de la boucle , « 1 » est affiché et la condition n == 2 de if est vérifiée. Puisque la valeur de n est 1, la condition devient fausse.

Dans la deuxième itération de la boucle , ‘2’ est à affiché et la condition de if est vérifiée. Cette fois, la valeur de n est 2 et donc la condition de if devient vraie. Dans le code de if , l’instruction break termine la boucle.

Voici le même code avec la boucle while.

class Test {
    public static void main(String[] args) {
        int n = 1;

        while (n <= 5) {
            System.out.println("*");
            if (n == 2) {
                break;
            }
            n++;
        }
    }
}

Prenons un exemple d’une boucle infinie.

import java.util.Scanner;

class Test {

    public static void main(String[] args) {
        int x;
        Scanner s = new Scanner(System.in);

        for (;;) {
            System.out.println("Enter 0 to stop");
            x = s.nextInt();
            if (x == 0) {
                break;
            }
        }
    }
}

C’est une boucle infinie, afin de la terminer, nous utilisons l’instruction break. Si l’utilisateur entre 0, la condition de if sera satisfaite et l’instruction break terminera la boucle.

L’instruction continue

L’instruction Java continue est utilisée pour ignorer le bloc de code de la boucle en fonction de la condition. Donc, si la condition de l’instruction continue est TRUE, elle ignorera l’exécution du bloc de code de la boucle et retournera au début de la boucle, mais si la condition est FALSE, elle continuera à parcourir le reste du code de la boucle.

Donc, l’instruction continue ignore les instructions restantes dans la boucle et commence l’itération suivante.

class Test {

    public static void main(String[] args) {
        for (int n = 1; n <= 10; n++) {
            if (n == 5) {
                continue;
            }
            System.out.println(n);
        }
    }
}

Lorsque vous exécutez ce, vous allez remarquer que le 5 n’est pas affiché. En effet, à la cinquième itération, lorsque la valeur de n deviendra 5, la condition de if sera vraie et l’instruction continue dans le bloc de code de if sera exécutée. Ainsi, l’instruction suivante System.out.println(n) ne sera pas exécutée et la sixième itération commencera.

Vous aurez le même résultat avec une boucle while.

class Test {

    public static void main(String[] args) {
        int n = 1;

        while (n <= 10) {
            if (n == 5) {
                n++;
                continue;
            }
            System.out.println(n);
            n++;
        }
    }
}

Catégories : java

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *