Aller au contenu principal

Conditions et boucles

Notions théoriques

Les conditions if / else if / else

La structure conditionnelle en Java est similaire à PHP, mais sans le $ devant les variables :

int note = 14;

if (note >= 16) {
System.out.println("Très bien");
} else if (note >= 14) {
System.out.println("Bien");
} else if (note >= 12) {
System.out.println("Assez bien");
} else {
System.out.println("Insuffisant");
}

Comparer des String : .equals() et pas ==

Attention : ne jamais comparer des String avec ==

En Java, == compare les références (adresses mémoire), pas le contenu des chaînes. Pour comparer le contenu de deux String, utilisez toujours .equals() :

String reponse = "oui";

// FAUX - compare les références, pas le contenu
if (reponse == "oui") { ... }

// CORRECT - compare le contenu
if (reponse.equals("oui")) { ... }

// Pour ignorer la casse :
if (reponse.equalsIgnoreCase("OUI")) { ... }

L'instruction switch classique

int jour = 3;
switch (jour) {
case 1:
System.out.println("Lundi");
break;
case 2:
System.out.println("Mardi");
break;
case 3:
System.out.println("Mercredi");
break;
default:
System.out.println("Autre jour");
break;
}
Le break est obligatoire

Sans break, l'exécution "tombe" dans le cas suivant (fall-through). C'est rarement ce qu'on veut.

Switch expression (Java 14+)

Java 14 introduit une syntaxe plus moderne avec -> qui évite les break :

int jour = 3;
String nomJour = switch (jour) {
case 1 -> "Lundi";
case 2 -> "Mardi";
case 3 -> "Mercredi";
case 4 -> "Jeudi";
case 5 -> "Vendredi";
default -> "Week-end";
};
System.out.println(nomJour);

Cette syntaxe est plus concise et moins sujette aux erreurs. Préférez-la dans les nouveaux projets.

La boucle while

int compteur = 1;
while (compteur <= 5) {
System.out.println("Tour numéro " + compteur);
compteur++;
}

La boucle do-while

La boucle do-while s'exécute au moins une fois, même si la condition est fausse dès le départ :

int tentatives = 0;
do {
System.out.println("Tentative " + (tentatives + 1));
tentatives++;
} while (tentatives < 3);

La boucle for classique

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

Structure : for (initialisation ; condition ; incrément)

La boucle for-each

Pour parcourir facilement un tableau ou une collection :

String[] fruits = {"pomme", "banane", "cerise"};
for (String fruit : fruits) {
System.out.println(fruit);
}

break et continue

  • break : quitte immédiatement la boucle
  • continue : passe à l'itération suivante sans exécuter le reste du corps
for (int i = 0; i < 10; i++) {
if (i == 5) break; // s'arrête à 5
if (i % 2 == 0) continue; // saute les pairs
System.out.println(i); // affiche 1, 3
}

Exemple pratique

public class ConditionsBoucles {

public static void main(String[] args) {
// Table de multiplication avec for
int nombre = 7;
System.out.println("Table de " + nombre + " :");
for (int i = 1; i <= 10; i++) {
System.out.println(nombre + " x " + i + " = " + (nombre * i));
}

System.out.println("---");

// Mention avec if/else if
double[] notes = {8.5, 12.0, 14.5, 16.0, 19.5};
for (double note : notes) {
String mention;
if (note >= 16) {
mention = "Très Bien";
} else if (note >= 14) {
mention = "Bien";
} else if (note >= 12) {
mention = "Assez Bien";
} else if (note >= 10) {
mention = "Passable";
} else {
mention = "Ajourné";
}
System.out.println("Note " + note + " → " + mention);
}
}
}
astuce

Pour concaténer le résultat d'un calcul dans un println, entoure le calcul de parenthèses : System.out.println(nombre + " x " + i + " = " + (nombre * i));

Test de mémorisation/compréhension


Quelle méthode faut-il utiliser pour comparer deux String en Java ?


Quelle boucle garantit d'être exécutée au moins une fois ?


Dans un switch classique, quel mot-clé arrête l'exécution du cas courant ?


Quelle est la syntaxe correcte d'une boucle for qui affiche les nombres de 0 à 4 ?


Que fait `continue` dans une boucle ?


Quelle syntaxe Java 14+ permet un switch sans break ?


TP pour réfléchir et résoudre des problèmes

Vous allez créer un programme qui affiche les jours de la semaine et classe les notes d'un étudiant avec leurs mentions.

Étape 1 — Afficher les jours avec un switch expression

Utilise un switch expression (syntaxe Java 14+) pour obtenir le nom du jour à partir d'un numéro.


Bonne pratique - Switch expression plutôt que switch classique

La syntaxe case X -> est plus sûre car elle ne nécessite pas de break et évite les erreurs de fall-through. Utilisez-la dès que vous écrivez du code pour Java 14 ou supérieur.

Étape 2 — Boucle sur des notes et affichage des mentions

Déclare un tableau de notes et parcours-le avec une boucle for-each pour afficher chaque note avec sa mention.


Bonne pratique - for-each pour la lisibilité

Quand vous n'avez pas besoin de l'index, préférez la boucle for-each au for classique. Elle est plus lisible et évite les erreurs d'indice (index out of bounds).

Étape 3 — Ajouter la condition de mention

Dans le corps de la boucle for-each, ajoute un if/else if/else pour afficher la mention correspondant à la note.


Bonne pratique - Conditions du plus restrictif au plus large

Ordonnez toujours vos if/else if du seuil le plus élevé au plus bas. Si vous mettez note >= 10 en premier, toutes les notes au-dessus de 10 (y compris 16, 18, 20) tomberaient dans ce premier cas.

📌 Une solution