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 ==
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;
}
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 bouclecontinue: 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);
}
}
}
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
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.
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.
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.
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.