Boucle For et enhanced For en Java

Construction des boucles for en Java

Bien que les instructions while et do/while soient puissantes, certaines tâches en programmation sont si fréquentes qu’il est pertinent d’utiliser des boucles for en Java. Par exemple, itérer exactement 10 fois ou parcourir une liste de noms peut être réalisé en une seule ligne grâce à la syntaxe concise de la boucle for. Ainsi, nous présentons ici la structure de contrôle de répétition la plus pratique pour la boucle for en Java.

La boucle for se compose de trois parties principales séparées par des points-virgules : l’initialisation, la condition et la mise à jour. Pour mieux visualiser cette structure, consultez le tableau ci-dessous.

InitialisationConditionMise à jour
Déclaration et initialisation de la variableÉvaluation de la condition booléenneModification de la variable de boucle

Exemple de boucle for basique

Considérez l’exemple suivant qui imprime dix valeurs :

for(int i = 0; i < 10; i++) System.out.println("La valeur est : " + i); System.out.println(i); // NE COMPILERA PAS

Remarquez que la variable i déclarée dans la boucle a une portée limitée à la boucle elle-même.

Utilisation des boucles for pour imprimer des nombres

Voici un autre exemple qui affiche les cinq premiers nombres, en commençant par zéro :

for(int i = 0; i < 5; i++) { System.out.print(i + " "); }

À chaque itération, la condition est vérifiée et, grâce à la mise à jour, la variable i est incrémentée automatiquement.

Scénarios réels avec la boucle for en Java

Dans le monde réel, il est fréquent d’utiliser la variable i comme compteur dans une boucle for. Historiquement, i est utilisé comme abréviation de increment et demeure une pratique répandue. Pour des boucles imbriquées, on emploiera souvent j et k comme variables.

Impression des éléments dans l’ordre inverse

Supposons que vous souhaitez imprimer les mêmes cinq nombres en ordre inverse. Par exemple, l’objectif est d’afficher : 4 3 2 1 0. Considérez l’exemple initial suivant :

for(var compteur = 5; compteur > 0; compteur--) { System.out.print(compteur + " "); }

Ce code affiche : 5 4 3 2 1 car il commence par 5. Pour corriger cela, modifions la valeur initiale :

 for(var compteur = 4; compteur > 0; compteur--) { System.out.print(compteur + " "); }

Le résultat est : 4 3 2 1 mais il manque le 0. En ajustant la condition de terminaison, nous obtenons finalement :

 for(var compteur = 4; compteur >= 0; compteur--) { System.out.print(compteur + " "); }

Ainsi, le code affiche correctement : 4 3 2 1 0. Ce petit exercice montre l’importance de bien paramétrer la condition de sortie pour obtenir le résultat souhaité.

Exemples avancés de la boucle for en Java

Pour approfondir votre compréhension de la boucle for en Java, examinons quelques exemples avancés avec des variations et cas particuliers.

Boucle for infinie

L’exemple suivant crée une boucle infinie qui affiche en continu “Bonjour le monde” :

for( ; ; ) System.out.println("Bonjour le monde");

Utilisation de plusieurs termes dans la boucle for

Il est également possible d’inclure plusieurs déclarations dans l’initialisation et la mise à jour :

int x = 0; for(long y = 0, z = 4; x < 5 && y < 10; x++, y++) { System.out.print(y + " "); } System.out.print(x + " ");

Redéclaration d’une variable dans l’initialisation

Attention à ne pas redéclarer une variable déjà existante. Le code suivant ne compilera pas :

int x = 0; for(int x = 4; x < 5; x++) // NE COMPILERA PAS System.out.print(x + " ");

La solution consiste à assigner une valeur à la variable existante :

 int x = 0; for(x = 0; x < 5; x++) System.out.print(x + " ");

Types de données incompatibles dans l’initialisation

Les variables de l’initialisation doivent être du même type. Par exemple, le code suivant provoquera une erreur :

int x = 0; for(long y = 0, int z = 4; x < 5; x++) // NE COMPILERA PAS System.out.print(y + " ");

Utilisation de variables de boucle en dehors de la boucle

Une variable déclarée dans la boucle n’est accessible qu’à l’intérieur. Le code ci-dessous échouera à la compilation :

for(long y = 0, x = 4; x < 5 && y < 10; x++, y++) System.out.print(y + " "); System.out.print(x); // NE COMPILERA PAS

Modification des variables de boucle

En règle générale, il est déconseillé de modifier une variable de boucle à l’intérieur de la boucle, car cela peut rendre le comportement imprévisible. Par exemple :

for(int i = 0; i < 10; i++) i = 0;

for(int j = 1; j < 10; j++) j++;

La boucle for-each en Java

La boucle for-each est spécialement conçue pour itérer sur des tableaux ou des collections implémentant l’interface Iterable. Cette structure permet de réduire considérablement le code standard tout en améliorant la lisibilité.

Exemple avec un tableau de chaînes de caractères

Voici une méthode classique utilisant une boucle for traditionnelle :

public void afficherNoms(String[] noms) { for(int compteur = 0; compteur < noms.length; compteur++) System.out.println(noms[compteur]); }

Et la version optimisée avec une boucle for-each :

 public void afficherNoms(String[] noms) { for(var nom : noms) System.out.println(nom); }

Exemple avec une List

La boucle for-each fonctionne également avec une List :

public void afficherNoms(List noms) { for(var nom : noms) System.out.println(nom); }

Cas d’erreurs fréquentes avec la boucle for-each

Certains exemples ne compilent pas en raison d’incompatibilités de types. Par exemple :

String oiseaux = "Geai"; for(String oiseau : oiseaux) // NE COMPILERA PAS System.out.print(oiseau + " ");

String[] paresseux = new String[3]; for(int paresseu : paresseux) // NE COMPILERA PAS System.out.print(paresseu + " ");

En conclusion, la boucle for en Java offre une syntaxe puissante et concise pour itérer sur des ensembles de données. Grâce à ces exemples et explications, vous êtes désormais mieux armé pour écrire un code clair et efficace.

Par ailleurs, il est toujours important d’adapter le style de votre code en fonction de vos besoins et de respecter les bonnes pratiques en matière de nommage, telles que l’utilisation de noms de variables et de méthodes en français, par exemple getNom au lieu de getName.

Enfin, n’oubliez pas que la maîtrise de la boucle for en Java est essentielle pour développer des applications robustes et performantes. En outre, l’utilisation judicieuse de ces boucles contribuera à optimiser votre code et à améliorer son référencement naturel.