JavaRush /Java Blog /Random-IT /Per il ciclo in Java

Per il ciclo in Java

Pubblicato nel gruppo Random-IT
Dicono che il miglior programmatore sia un programmatore pigro. Invece di eseguire più volte lo stesso tipo di azioni, troverà un algoritmo che farà il lavoro per lui. E lo farà bene in modo che non sia necessario rifarlo. Come utilizzare il ciclo for in Java - 1Per evitare di scrivere sempre lo stesso codice, sono stati inventati i loop. Immaginiamo di dover visualizzare sulla console i numeri da 0 a 99. Codice senza loop:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
Questo codice richiederà 100 righe! Così tanti. Ed ecco come apparirebbe con un loop:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Solo 3 righe!

Cosa sono i loop?

Un ciclo for è una struttura di controllo del codice del programma che interrompe la linearità dell'esecuzione dell'algoritmo e consente di eseguire più volte il codice specificato. Ad esempio, devi prendere 30 gocce di medicinale. L'algoritmo sarà qualcosa del genere:
  1. Preparare un bicchiere.
  2. Aprire il coperchio.
  3. Ottieni 1 goccia.
  4. Prendi 2 gocce.
  5. ...
  6. Ottieni 30 gocce.
  7. Chiudi la medicina.
  8. Prendi la porzione ricevuta.
Questo algoritmo può essere spiegato molto più rapidamente:
  1. Preparare un bicchiere.
  2. Aprire il tappo antigoccia.
  3. Ottieni 30 gocce.
  4. Chiudi la medicina.
  5. Prendi la porzione ricevuta.
Usiamo il ciclo for quasi ogni giorno in conversazioni con altre persone: “...20 passi per strada...”, “...fai 10 ripetizioni e altre 5 a 2 volte più lentamente...”, “.. .fai 5 acquisti in varie categorie e ricevi un premio…” Potrei continuare a lungo, ma il senso è chiaro. In Java, il ciclo for è essenziale per mantenere il codice breve e conciso.

Come funziona il ciclo for

Un ciclo for viene utilizzato in questo modo:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Conclusione:

0
1
2
3
4
Se traduciamo questa voce in linguaggio umano, otteniamo quanto segue: " Crea una variabile i con un valore iniziale di 0, fino a raggiungere 5, aggiungile 1 e ad ogni passaggio scrivi il valore di i sulla console ". Il ciclo for in Java si basa su tre fasi, che possono essere rappresentate dal seguente diagramma: Come utilizzare un ciclo for in Java - 2La condizione per uscire dal ciclo è un'espressione booleana. Se è falso, il ciclo terminerà. Nell'esempio sopra, la variabile iviene incrementata di 1. Se il suo valore è inferiore a 5, il ciclo continua. Ma non appena idiventa maggiore o uguale a 5, il ciclo si fermerà. L'operatore contatore è un'espressione che esegue una conversione su una variabile contatore. Nell'esempio precedente la variabile iè stata incrementata di 1, ovvero il ciclo verrà eseguito esattamente 5 volte. Se l'operatore contatore aggiunge 2 alla variabile i, il risultato sarà diverso:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Conclusione:

0
2
4
Puoi anche moltiplicare una variabile, dividere, elevare a potenza, in generale, fare quello che vuoi. La cosa principale è che la trasformazione dia come risultato un numero. Il corpo del ciclo è qualsiasi codice che può essere eseguito. Nell'esempio precedente, il corpo del ciclo trasmetteva il valore della variabile i alla console, ma i contenuti di questo corpo sono limitati dal compito e dall'immaginazione. Riassumendo l'intero schema, il principio di questo ciclo for è il seguente: il codice che si trova nel corpo del ciclo verrà eseguito tante volte quante sono le conversioni che l'operatore contatore effettuerà prima che venga raggiunta la condizione per uscire dal ciclo . Se imposti la condizione di uscita dal ciclo come true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Quindi il codice dopo il ciclo verrà contrassegnato con un errore unreachable statementpoiché non verrà mai eseguito. Una sfida all'ingegno: come risultato dell'esecuzione del codice seguente, " Loop ended" verrà visualizzato sulla console o il ciclo verrà eseguito all'infinito?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Risposta: ci sarà. La variabile i prima o poi raggiungerà il suo valore massimo e un ulteriore aumento la trasformerà in un valore massimo negativo, per cui la condizione di uscita sarà soddisfatta (i < = -1).

forEach ciclo

Quando si lavora con i loop, a volte è necessario eseguire iterazioni su array o raccolte. In genere è possibile scorrere un array utilizzando un ciclo for:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
Ed è giusto. Tuttavia, per scorrere tutti gli elementi dell'array uno per uno, hanno creato la costruzione forEach. La sua firma è la seguente:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
È possibile scorrere un array di stringhe e stamparle ciascuna sulla console nel modo seguente:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
Anche breve e conciso. Soprattutto, non c'è bisogno di pensare al contatore e alle condizioni di uscita, tutto è già fatto per noi.

Come vengono utilizzati i cicli for

Ora diamo un'occhiata ad alcuni esempi di utilizzo del ciclo for in Java per risolvere vari problemi.

Ciclo inverso (dal più grande al più piccolo)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Conclusione:

5
4
3
2
1

Diverse variabili e incremento del contatore nel corpo del ciclo

È possibile utilizzare più variabili in un ciclo for, ad esempio possono essere convertite in un'istruzione contatore:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
Conclusione:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
Oppure dichiara due variabili ed esegui il loop finché non sono uguali tra loro:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Conclusione:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
È improbabile che questa azione abbia qualche valore, ma è utile conoscere questa possibilità. Puoi anche creare cicli interni all'interno di un ciclo for. In questo caso, il numero di passaggi del ciclo verrà moltiplicato:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
Conclusione:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
In un ciclo con contatore jè possibile accedere al contatore del ciclo esterno. Ciò rende i cicli nidificati un modo ideale per attraversare array bidimensionali, tridimensionali e di altro tipo:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
Conclusione:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

Completamento anticipato del ciclo

Se è necessario interrompere un ciclo durante l'elaborazione, utilizzare l'operatore break, che interrompe il corpo corrente del ciclo. Vengono saltate anche tutte le iterazioni successive:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
Il metodo stamperà la posizione del primo elemento cercato nell'array:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Conclusione:

1

Ciclo infinito

Un altro modo per creare un ciclo for infinito è lasciare vuoti l'area di dichiarazione del contatore, la condizione di uscita e l'istruzione del contatore:
for (;;) {
}
Ma tieni presente che nella maggior parte dei casi un ciclo infinito è la prova di un errore logico. Un tale ciclo deve avere una condizione di uscita. Come utilizzare un ciclo for in Java - 3
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION