Boucle While et do while en Java

La boucle while Java est un outil essentiel en programmation. En effet, il est courant en développement de répéter une tâche plusieurs fois afin d’optimiser le code. Vous pouvez penser à utiliser des structures conditionnelles pour cela, mais cela conduirait rapidement à une succession interminable d’instructions if et else, surtout lorsqu’il s’agit de répéter une action 100 fois ou plus. Ainsi, la boucle while Java s’impose naturellement pour réaliser ces opérations de manière concise et efficace.

Introduction aux boucles while Java

Passons maintenant aux boucles ! Une boucle est une structure de contrôle répétitive qui permet d’exécuter une instruction de code plusieurs fois consécutivement. En utilisant des variables réassignables, chaque itération peut être légèrement différente. De plus, la boucle while Java simplifie grandement l’écriture de code répétitif.

Exemple pratique : Boucle while Java simple

La boucle suivante s’exécute exactement 10 fois :


int compteur = 0;

while (compteur < 10) {
    double prix = compteur * 10;
    System.out.println(prix);
    compteur++;
}
  

Ne vous inquiétez pas si ce code vous semble complexe au début ; nous allons le détailler. Dans cette section, nous étudierons la boucle while Java ainsi que ses deux formes principales. Par la suite, nous aborderons la boucle for, dont la structure est intimement liée à celle de la boucle while Java.

L’instruction while Java

La structure la plus simple de contrôle répétitif en Java est l’instruction while. Comme toutes les structures de répétition, elle possède une condition de terminaison, définie par une expression booléenne. Cette expression est évaluée avant chaque itération, et la boucle se poursuit tant qu’elle renvoie true.

FIGURE 3.5 – La structure d’une instruction while

Lors de l’exécution, l’expression booléenne est vérifiée à chaque itération et la boucle s’arrête dès que l’expression devient fausse.

Cas d’utilisation réel : La souris qui mange

Voyons comment une boucle peut être utilisée pour modéliser le repas d’une souris :


int placeDansVentre = 5;

public void mangerFromage(int morsuresDeFromage) {
    while (morsuresDeFromage > 0 && placeDansVentre > 0) {
        morsuresDeFromage--;
        placeDansVentre--;
    }
    System.out.println(morsuresDeFromage + " morceaux de fromage restants");
}
  

Cette méthode prend une quantité de nourriture – ici, du fromage – et continue jusqu’à ce que la souris n’ait plus de place dans son ventre ou qu’il n’y ait plus de fromage à consommer. À chaque itération, la souris « mange » une bouchée de fromage et perd une place dans son ventre. Grâce à une condition booléenne composée, la boucle while Java peut se terminer selon l’une ou l’autre des conditions.

Attention aux cas particuliers

Il est important de noter qu’une boucle while Java peut se terminer dès la première évaluation de la condition. Par exemple, combien de fois “Pas rassasié !” est-il affiché dans l’exemple suivant ?


int plein = 5;

while (plein < 5) {
    System.out.println("Pas rassasié !");
    plein++;
}
  

La réponse ? Zéro ! Dès la première évaluation, la condition n’est pas remplie et la boucle ne s’exécute pas. Ainsi, la boucle while Java est souvent utilisée dans des cas où le nombre d’exécutions peut être nul ou multiple.

L’instruction do/while Java

La deuxième forme d’une boucle while Java est l’instruction do/while. Contrairement à la boucle while classique, la boucle do/while garantit que le bloc d’instructions sera exécuté au moins une fois avant de vérifier la condition de terminaison.

FIGURE 3.6 – La structure d’une instruction do/while

Par exemple, quel sera le résultat des instructions suivantes ?


int lezard = 0;

do {
    lezard++;
} while (false);

System.out.println(lezard); // 1
  

Java exécute d’abord le bloc d’instructions, puis vérifie la condition. Même si la condition est immédiatement fausse, le bloc s’exécute une fois, et le programme affiche donc 1.

Tableau comparatif des boucles while et do/while Java

Type de boucleCaractéristiques
whileÉvalue la condition avant chaque itération ; la boucle peut ne jamais s’exécuter.
do/whileExécute le bloc au moins une fois, puis évalue la condition.

Boucles infinies en Java

La chose la plus importante à retenir lors de l’utilisation de toute structure répétitive est de s’assurer qu’elle se termine toujours ! En effet, une boucle qui ne se termine pas peut entraîner de nombreux problèmes, tels que des exceptions de débordement, des fuites de mémoire, des performances ralenties, voire des données erronées.

Examinons un exemple :


int enclos = 2;
int cochons = 5;

while (enclos < 10)
    cochons++;
  

Vous remarquerez un problème flagrant dans cet exemple : la variable enclos n’étant jamais modifiée, l’expression (enclos < 10) renverra toujours true, créant ainsi une boucle infinie. En d’autres termes, assurez-vous que la condition de votre boucle, ou les variables sur lesquelles elle repose, évoluent à chaque itération. Par conséquent, la boucle while Java se terminera toujours dans toutes les circonstances prévues.

De plus, comme vous l’apprendrez dans la dernière section de ce chapitre, une boucle peut également se terminer grâce à d’autres instructions, telles que break.

En conclusion, la compréhension et la maîtrise de la boucle while Java et de sa variante do/while sont cruciales pour écrire un code efficace et sûr. N’oubliez pas d’appliquer ces principes dans vos projets de programmation pour éviter les erreurs courantes et améliorer la lisibilité de votre code.