Qual è la parola chiave “continua” e come funziona in Java?

Ho visto questa parola chiave per la prima volta e mi chiedevo se qualcuno potesse spiegarmi cosa fa.

  • Qual è la parola chiave continue ?
  • Come funziona?
  • Quando viene usato?

Un’istruzione continue senza etichetta verrà eseguita di nuovo dalla condizione in cui il ciclo while o do più interno e dall’espressione di aggiornamento del ciclo più interno. Viene spesso utilizzato per terminare anticipatamente l’elaborazione di un ciclo e quindi evitare istruzioni if profondamente annidate. Nell’esempio seguente, continue a ottenere la riga successiva, senza elaborare la seguente istruzione nel ciclo.

 while (getNext(line)) { if (line.isEmpty() || line.isComment()) continue; // More code here } 

Con un’etichetta, continue verrà eseguita nuovamente dal ciclo con l’etichetta corrispondente, anziché il ciclo più interno. Questo può essere usato per sfuggire a loop profondamente annidati, o semplicemente per chiarezza.

A volte continue viene anche utilizzato come segnaposto per rendere più chiaro un corpo del ciclo vuoto.

 for (count = 0; foo.moreData(); count++) continue; 

La stessa dichiarazione senza etichetta esiste anche in C e C ++. L’equivalente in Perl è il next .

Questo tipo di stream di controllo non è raccomandato, ma se lo si sceglie, è ansible utilizzare anche continue a simulare una forma limitata di goto . Nell’esempio seguente, il continue eseguirà il ciclo vuoto for (;;) .

 aLoopName: for (;;) { // ... while (someCondition) // ... if (otherCondition) continue aLoopName; 

continue è un po ‘come goto . Hai familiarità con la break ? È più facile pensarli in contrasto:

  • break termina il loop (salta al codice sottostante).

  • continue termina il resto dell’elaborazione del codice all’interno del ciclo per l’iterazione corrente, ma continua il ciclo.

Vediamo un esempio:

 int sum = 0; for(int i = 1; i <= 100 ; i++){ if(i % 2 == 0) continue; sum += i; } 

Ciò otterrebbe la sum di soli numeri dispari da 1 a 100.

Se si pensa al corpo di un loop come subroutine, continue è una specie di return . La stessa parola chiave esiste in C e ha lo stesso scopo. Ecco un esempio forzato:

 for(int i=0; i < 10; ++i) { if (i % 2 == 0) { continue; } System.out.println(i); } 

Questo stamperà solo i numeri dispari.

In generale, vedo continue (e break ) come un avvertimento che il codice potrebbe utilizzare alcuni refactoring, specialmente se la dichiarazione while o for loop non è immediatamente visibile. Lo stesso vale per il return nel mezzo di un metodo, ma per una ragione leggermente diversa.

Come altri hanno già detto, continue mosse fino alla successiva iterazione del ciclo, mentre la break sposta fuori dal ciclo di chiusura.

Questi possono essere timebomb di manutenzione perché non esiste un collegamento immediato tra il continue / break e il ciclo che continua / si interrompe a parte il contesto; aggiungi un loop interno o sposta le “budella” del loop in un metodo separato e hai un effetto nascosto del continue / break fallimento.

IMHO, è meglio usarli come misura di ultima istanza, e quindi assicurarsi che il loro uso sia raggruppato strettamente all’inizio o alla fine del ciclo in modo che il prossimo sviluppatore possa vedere i “limiti” del ciclo in una schermata .

continue , break e return (a parte l’Unico Vero Ritorno alla fine del tuo metodo) rientrano tutti nella categoria generale dei “GOTO nascosti”. Posizionano il controllo del ciclo e della funzione in punti imprevisti, che alla fine causano errori.

Come già accennato, si salterà l’elaborazione del codice sottostante e fino alla fine del ciclo. Quindi, vieni spostato alle condizioni del ciclo ed esegui l’iterazione successiva se questa condizione è ancora valida (o se c’è un flag, nella condizione del loop denotato).

Deve essere evidenziato che nel caso di do - while si è spostati nella condizione in fondo dopo un continue , non all’inizio del ciclo.

Questo è il motivo per cui molte persone non rispondono correttamente a ciò che verrà generato dal codice seguente.

  Random r = new Random(); Set aSet= new HashSet(); int anInt; do { anInt = r.nextInt(10); if (anInt % 2 == 0) continue; System.out.println(anInt); } while (aSet.add(anInt)); System.out.println(aSet); 

* Se la tua risposta è che aSet conterrà numeri dispari solo al 100% … ti sbagli!

“continua” in Java significa andare alla fine del loop corrente, significa: se il compilatore vede continuare in un ciclo andrà alla successiva iterazione

Esempio: questo è un codice per stampare i numeri dispari da 1 a 10

il compilatore ignorerà il codice di stampa ogni volta che vede continuare a passare alla successiva iterazione

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

Considera una condizione If Else. Una dichiarazione continua esegue ciò che è presente in una condizione e esce dalla condizione, ovvero salta alla successiva iterazione o condizione. Ma una pausa lascia il ciclo. Considera il seguente programma. ‘

 public class ContinueBreak { public static void main(String[] args) { String[] table={"aa","bb","cc","dd"}; for(String ss:table){ if("bb".equals(ss)){ continue; } System.out.println(ss); if("cc".equals(ss)){ break; } } System.out.println("Out of the loop."); } } 

Stamperà: aa cc Out of the loop.

Se si utilizza break in luogo di continue (After if.), Verrà semplicemente stampato aa e out del ciclo .

Se la condizione “bb” è uguale a ss è soddisfatta: Per Continua: Va alla successiva iterazione cioè “cc” .equals (ss). For Break: esce dal ciclo e stampa “Out of the loop”.

Sono un po ‘in ritardo per la festa, ma …

Vale la pena ricordare che continue è utile per i loop vuoti in cui tutto il lavoro è svolto nell’espressione condizionale che controlla il loop. Per esempio:

 while ((buffer[i++] = readChar()) >= 0) continue; 

In questo caso, tutto il lavoro di leggere un carattere e aggiungerlo al buffer viene eseguito nell’espressione che controlla il ciclo while . L’istruzione continue serve come indicatore visivo del fatto che il ciclo non ha bisogno di un corpo.

È un po ‘più ovvio dell’equivalente:

 while (...) { } 

e sicuramente migliore (e più sicuro) lo stile di codifica rispetto all’utilizzo di una dichiarazione vuota come:

 while (...) ; 

Fondamentalmente in Java, continua è una dichiarazione. Quindi l’istruzione continue viene normalmente utilizzata con i loop per saltare l’iterazione corrente.

Per come e quando viene utilizzato in java, fare riferimento al link sottostante. Ha una spiegazione con l’esempio.

http://www.flowerbrackets.com/continue-java-example/

Spero che sia d’aiuto !!