1.5 Boucles

Java propose quatre facons d'iterer : while, do/while, for classique, et for-each. Il y a aussi forEach via les collections (version lambda).

1. while

Evalue la condition avant chaque iteration. Peut ne jamais s'executer.

int tentatives = 0;

while (tentatives < 3) {
    System.out.println("Tentative " + tentatives);
    tentatives++;
}

2. do / while

Evalue la condition apres chaque iteration. S'execute au moins une fois.

double valeur;

do {
    valeur = Math.random() * 10; // genere un nombre entre 0 et 10
} while (valeur < 5);           // recommence si < 5

// Note : valeur est declaree AVANT le do{} pour etre visible dans le while
Piege classique : une variable declaree a l'interieur du bloc do{} n'est pas accessible dans le while() — elle sort du scope. Declarer toujours la variable avant le do.

3. for classique

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

// Parcourir un tableau
String[] fichiers = {"doc.pdf", "photo.jpg", "video.mp4"};
for (int i = 0; i < fichiers.length; i++) {
    System.out.println(i + " : " + fichiers[i]);
}

4. for-each

La facon la plus lisible de parcourir un tableau ou une collection. Pas d'index disponible.

String[] fichiers = {"doc.pdf", "photo.jpg", "video.mp4"};

for (String fichier : fichiers) {
    System.out.println(fichier);
}

5. forEach — version lambda (collections)

Disponible sur toutes les collections Java. Utilise une lambda (on verra ca en phase 4).

import java.util.List;

List<String> fichiers = List.of("doc.pdf", "photo.jpg", "video.mp4");

// Version longue
fichiers.forEach(fichier -> System.out.println(fichier));

// Version courte avec reference de methode
fichiers.forEach(System.out::println);
forEach n'existe pas sur les tableaux simples (String[]), seulement sur les collections (List, Set...). On verra les collections en phase 3.

6. break et continue

for (int i = 0; i < 10; i++) {
    if (i == 3) continue; // saute l'iteration i=3
    if (i == 7) break;    // stoppe la boucle
    System.out.println(i);
}
// Affiche : 0 1 2 4 5 6

JBDC — Apercu

Les boucles piloteront le menu interactif de la version console qu'on construira en phase 4 :

Scanner scanner = new Scanner(System.in);
boolean running = true;

while (running) {
    System.out.println("\n=== JBDC ===");
    System.out.println("1. Envoyer un fichier");
    System.out.println("2. Lister mes transferts");
    System.out.println("0. Quitter");

    int choix = scanner.nextInt();

    switch (choix) {
        case 1 -> envoyerFichier();
        case 2 -> listerTransferts();
        case 0 -> running = false;
        default -> System.out.println("Choix invalide");
    }
}
Phase 1 terminee. La phase 2 commence la POO : on modelise les classes Fichier, Utilisateur et Transfert.
Precedent : Conditions Phase 2 : Classes et Objets