Salta ai contenuti

Ciclo while

Il ciclo while ripete un blocco finche una condizione resta vera.

int numero = 1;
while (numero <= 3) {
System.out.println(numero);
numero++;
}

Output:

1
2
3

Java controlla la condizione prima di ogni giro.

Un ciclo while ha questa forma:

while (condizione) {
// codice da ripetere
}

Nel nostro esempio:

while (numero <= 3)

il ciclo continua finche numero e minore o uguale a 3.

Dentro il ciclo aggiorniamo la variabile:

numero++;

Senza questo aggiornamento, numero resterebbe sempre uguale.

Questo codice non finisce mai:

int numero = 1;
while (numero <= 3) {
System.out.println(numero);
}

numero resta sempre 1, quindi la condizione e sempre vera.

Un ciclo che non finisce si chiama ciclo infinito.

Attenzione: quando scrivi un while, chiediti sempre: “dentro il ciclo, cosa cambia la condizione?”

while e molto utile quando non sai prima quante volte l’utente fara qualcosa.

import java.util.Scanner;
public class Password {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String password = "";
while (!password.equals("java")) {
System.out.print("Password: ");
password = scanner.nextLine();
}
System.out.println("Accesso consentito.");
scanner.close();
}
}

Il ciclo continua finche la password non e "java".

!password.equals("java") significa: “la password non e uguale a java”.

Possiamo aggiungere un contatore:

import java.util.Scanner;
public class Tentativi {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String password = "";
int tentativi = 0;
while (!password.equals("java")) {
System.out.print("Password: ");
password = scanner.nextLine();
tentativi++;
}
System.out.println("Tentativi usati: " + tentativi);
scanner.close();
}
}

Ogni giro aumenta tentativi di 1.

Usa for quando sai gia quante volte ripetere:

for (int i = 0; i < 5; i++) {
...
}

Usa while quando vuoi ripetere finche succede qualcosa:

while (!password.equals("java")) {
...
}

Poiche while controlla la condizione all’inizio, il blocco potrebbe non essere eseguito nemmeno una volta.

int numero = 10;
while (numero < 5) {
System.out.println(numero);
}

Qui non viene stampato nulla, perche la condizione e falsa gia all’inizio.