English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

教程基础Java

Controllo dei flussi Java

Array Java

Orientazione agli oggetti (I) Java

Orientazione agli oggetti (II) Java

Orientazione agli oggetti (III) Java

Gestione delle eccezioni Java

List Java

Queue (Coda) Java

Map di Java

Set di Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti Java

Cicli while e do...while in Java

In questo tutorial, impareremo a utilizzare i cicli while e do...while in Java con esempi e anche come funziona il ciclo while nel programmazione informatica

Nel programmazione informatica, i cicli sono utilizzati per ripetere un blocco di codice specifico fino a quando non si soddisfa una condizione specifica (l'espressione di test è falsa). Ad esempio:

Immagina, dobbiamo stampare una frase 50 volte sulla schermata. Bene, possiamo farlo utilizzando la statement print 50 volte (senza utilizzare il ciclo). E se dobbiamo stampare un milione di volte la stessa frase? Dobbiamo utilizzare un ciclo. Utilizzando un ciclo, possiamo scrivere una sola volta la statement print e eseguire quante volte ci serve.

Questo è solo un esempio semplice che mostra l'importanza del ciclo nel programmazione informatica. In Java ci sono 3 tipi di cicli:for cicloe il ciclo while e il ciclo do-while.

Ciclo while Java

La sintassi del ciclo while in Java è:

while (testExpression) {
    // Codice nel corpo del ciclo while
{}

Come funziona il ciclo while?

Nella grammatica sopra, il contenuto tra le parentesi,TestL'espressione (testExpression) è un'espressione booleana. Se il risultato del calcolo dell'espressione di test (testExpression) è true,

  • Le istruzioni all'interno del ciclo while vengono eseguite.

  • Poi, l'espressione di test (testExpression) viene valutata di nuovo.

Questo processo continua fino a quando l'espressione di test viene valutata come false. Se il risultato del calcolo dell'espressione di test è false,

  • Il ciclo while viene terminato.

Diagramma di flusso del ciclo while

Come funziona il ciclo while?

Esempio 1: ciclo while

// Il programma stampa 10 linee
class Loop {
    public static void main(String[] args) {
      
        int i = 1;
	   
        while (i <= 10) {
            System.out.println("Linea " + i);
            ++i;
        {}
    {}
{}

Output:

Linea 1
Linea 2
Linea 3
Linea 4
Linea 5
Linea 6
Linea 7
Linea 8
Linea 9
Linea 10

Nell'esempio sopra, abbiamo un'espressione di test (i <= 10). Controlla se il valore di i è minore o uguale a 10.

All'inizio, il valore di i in questo punto è 1. Pertanto, il risultato del calcolo dell'espressione di test (testExpression) è true. Di conseguenza, verranno eseguite le istruzioni all'interno del ciclo while.

Notare le istruzioni all'interno del ciclo while,

 ++i;

Questa istruzione aggiunge 1 al valore di i in ogni iterazione. Dopo 10 iterazioni, il valore di i è 11. Poi l'espressione di test (i <= 10) diventa false, il ciclo while termina.

Per ulteriori informazioni sui test delle espressioni e sul loro modo di valutazione, visitareOperatori relazionali JavaeOperatori logici Java.

Esempio 2: ciclo while in Java

// Scrivere il codice per trovare la somma dei numeri naturali tra 1 e 100.
class AssignmentOperator {
    public static void main(String[] args) {
      
        int sum = 0, i = 100;
	   
        while (i != 0) {
            sum += i; // È equivalente a sum = sum + i;
            --i;
        {}
	   
        System.out.println("Sum = " + sum);
    {}
{}

Output:

Sum = 5050

Qui abbiamo due variabili chiamate sum, i, con valori iniziali rispettivamente 0 e 100.

In ogni iterazione del ciclo while,

  • Assegnare un valore alla variabile sum: sum + i

  • Il valore di i viene ridotto di 1

Il ciclo continua fino a quando il valore di i è uguale a 0.

1ma ripetizione: i = 100, sum = 0+100 = 100, contemporaneamente --i = 99
2ma ripetizione: i = 99, sum = 100+99 = 199, contemporaneamente --i = 98
3ma ripetizione: i = 98, sum = 199+98 = 297, contemporaneamente --i = 97
... .. ...
... .. ...
99ma ripetizione: i = 2, sum = 5047+2 = 5049, contemporaneamente --i = 1
100ma ripetizione: i = 1, sum = 5049+1 = 5050, contemporaneamente --i = 0

Ciclo do...while in Java

Il ciclo do...while è simile al ciclo while, ma c'è una differenza chiave: il corpo del ciclo viene eseguito una volta prima di controllare l'espressione di test.

Ecco la sintassi del ciclo do...while.

do {
   //Codice nel corpo del ciclo do...while
} while (testExpression);

Come funziona il ciclo do...while?

Il corpo del ciclo do...while viene eseguito una volta (prima di controllare l'espressione di test). Solo così l'espressione di test verrà controllata.

Se l'espressione di test viene calcolata come true, viene eseguito il codice del corpo del ciclo e viene nuovamente calcolata l'espressione di test. Questo processo continua fino a quando l'espressione di test viene calcolata come false.

Quando l'espressione di test è false, il ciclo do..while termina.

Diagramma del ciclo do ... while

Diagramma di workflow del ciclo do ... while

Esempio 3: ciclo do ... while

Il seguente programma calcola la somma dei numeri inseriti dall'utente fino a quando l'utente non inserisce 0.

Per accettare l'input dell'utente, abbiamo utilizzato l'oggetto Scanner. Per ulteriori informazioni su Scanner, visitaJava Scanner.

import java.util.Scanner;
class Sum {
    public static void main(String[] args) {
	   
        Double number, sum = 0.0;
        //Crea un oggetto Scanner
        Scanner input = new Scanner(System.in);
        do {
            //Accetta l'input dell'utente
            System.out.print("Inserisci un numero: ");
            number = input.nextDouble();
            sum += number;
        } while (number != 0.0); //Espressione di test
	   
        System.out.println("Sum = " + sum);
    {}
{}

Output:

Inserisci un numero: 2.5
Inserisci un numero: 23.3
Inserisci un numero: -4.2
Inserisci un numero: 3.4
Inserisci un numero: 0
Sum = 25.0

Ciclo infinito

Quando si utilizzano cicli, dobbiamo sempre essere cauti. Questo perché se configuriamo in modo errato l'espressione di test, rendendola mai falsa, i cicli while e do...while continueranno a eseguire in modo infinito.

Questo è ciò che si chiama ciclo while infinito e do...while. Ad esempio:

//Ciclo while infinito
while (true) {
   //Corpo del ciclo while
{}

Ecco un altro esempio

//Ciclo while infinito
int i = 100;
while (i == 100) {
   System.out.print("Hey!");
{}

Il funzionamento del ciclo do...while infinito è simile a quello del ciclo while.