CodeGym /Java Blog /Willekeurig /Java voor lus
John Squirrels
Niveau 41
San Francisco

Java voor lus

Gepubliceerd in de groep Willekeurig
Ooit merkte Mark Zuckerberg op dat computers erg goed zijn in het herhalen van opdrachten. Het is niet eenvoudig voor een mens, we worden moe van het vele malen achter elkaar herhalen van hetzelfde, maar een computer kan het miljoenen en miljarden keren doen en verveelt nooit. Als je alle Facebook-gebruikers probeert te groeten, is er geen mens die daar dagen genoeg voor heeft. U kunt echter een computer maken om deze taak op te lossen door een paar regels code te schrijven. Dit is hoe lussen werken. Ze lieten ons niet dezelfde routinematige acties herhalen. De meest populaire lus in Java is de zogenaamde gedefinieerde lus of for-lus.

Hoe schrijf je een for-lus in Java? For loop in het algemeen

For-lus voert sommige instructies een bepaald aantal keren uit. Bijvoorbeeld vijftig keer schrijven "Ik mag niet zo zijn, ho-ho, ho" of uitnodigingen sturen naar al je vrienden zijn typische taken voor dit soort loops. De syntaxis van de meest voorkomende versie van for loop:

for ([counter initialization]; [checking conditions]; [changing of the counter])
{
    //  statements
}
De initialisatie-uitdrukking wordt eenmaal uitgevoerd, daarna wordt de voorwaarde geëvalueerd, wat een booleaanse uitdrukking zou moeten zijn.
  • Wanneer de lus begint, worden de initialisaties uitgevoerd.
  • Wanneer de voorwaarden resulteren in onwaar, stopt onze lus met werken.
De teller verandert, meestal vindt verhoging (of verlaging) plaats na elke iteratie door de lus. U kunt elk van de drie lusuitdrukkingen overslaan (initialisatie, conditie controleren, teller wijzigen). De lusvoorwaarde wordt gecontroleerd vóór de volgende stap van de lus. Als de voorwaarde onwaar is, verlaat het programma de lus en gaat het verder met de instructie die volgt op de for-constructie. Hier hebben we een blokschema van for lus. For-lus in Java - 2

Hoe een for-lus in Java te gebruiken. Eenvoudig voorbeeld.

Hier is een specifiek Java for loop-voorbeeld. Laten we tien keer "Hallo!" String elke keer dat het van de nieuwe regel zou zijn met een nummer van deze regel. We zouden de volgende uitvoer moeten krijgen:
  1. Hallo!
  2. Hallo!
  3. Hallo!
  4. Hallo!
  5. Hallo!
  6. Hallo!
  7. Hallo!
  8. Hallo!
  9. Hallo!
  10. Hallo!
Hier is ons Java-programma dat dit probleem oplost:

public class ForExample {
   public static void main(String[] args) {
       for (int i = 0; i < 10; i++) {
           System.out.println(i + 1 + ". Hello!");
       }
   }
}

Hoe het werkt?

Stap 1. Teller i = 0. Loop controleert onze voorwaarde, i << 10, daarom worden loop-statements uitgevoerd. Het drukt de zin "1. Hallo!" af. 1 is een string i + 1 (omdat we vanaf nul hebben geteld, maar de eerste regel is nog steeds de eerste). Teller i wordt opgehoogd. Nu, i = 1. Stap 2. Teller i = 1. i < 10, dus we hebben een zin "2. Hallo!" en i + 1 = 2. … Stap 10. Teller i = 9, we hebben "10. Hallo!" en i wordt opgehoogd tot 10. Stap 11. Teller i = 10. i < 10 ? Nee, het is vals. Daarom wordt de lus beëindigd. For-lus in Java - 3

While-lus en for-lus: verschillen en overeenkomsten

In Java wordt een oneindige lus of een while-lus continu uitgevoerd als de booleaanse voorwaarde waar is. De syntaxis van de while-lus:

while (boolean condition)
       {
            loop statements...
       }
Vrij vaak kunt u kiezen welke lus u wilt gebruiken. Soms zijn ze heel dichtbij en kun je ze allebei gebruiken. Hier is bijvoorbeeld de code voor dezelfde taak (tien keer "Hallo!" schrijven met een nummer van de regel) geschreven met while-lus:

public class ForAndForEach {
   public static void main(String[] args) {
       int j = 0;  //  we use the counter this way 
       while (j < 10) {
           System.out.println(j + 1 + ". Hello!");
           j++;
       }
   }
}
Professionele programmeurs houden echter niet echt van de while-lus en proberen waar mogelijk de for-lus te gebruiken.
VOOR TERWIJL

We gebruiken de for-lus als we het aantal iteraties al wisten.

We gebruiken een while-lus als we het aantal iteraties niet precies weten.

Initialisatie, conditiecontrole en tellerwisseling zijn al in de syntaxis van een lus gestikt

Initialisatie en conditiecontrole binnen de lus. U kunt ook counter in verklaringen gebruiken.

Oneindige lus voor:


for(;;){
	System.out.println("working...");
}

Oneindige lus terwijl:


while(true){
	System.out.println("working...");
}

Hoe een for-lus in Java te verlaten

Gewoonlijk loopt een for-lus als een stroom en de natuurlijke manier om een ​​lus te verlaten is wanneer een voorwaarde een valse waarde aanneemt. Er zijn echter twee besturingsinstructies waarmee u de lus kunt verlaten voordat u de valse waarde van een voorwaarde krijgt: onderbreken en doorgaan.
  • break laat om de huidige lus te verlaten alsof de lusvoorwaarde is geëvalueerd als onwaar.
  • continue zorgt ervoor dat de lus naar de volgende stap springt (de teller herhalend) zonder de instructies uit te voeren.
Laten we het volgende probleem oplossen met pauze en doorgaan. We hebben een reeks namen en we zeggen hallo tegen iedereen uit deze reeks behalve de vreemden. Dus als we tijdens onze lus een "Vreemde" string tegenkomen, verlaten we deze (ga weg en stop om hallo te zeggen tegen iemand anders).

public class ForBreakExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
//  how to break out of a for loop, java: check if we have any "Stranger" in  //  our array            
if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               break;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
Het resultaat van onze programma-uitvoering is:

Hello,Mike
Hello,Dustin
I don't chat with strangers
Zien? We renden weg van de lus voordat we Lucas en Will begroetten. Laten we nu doorgaan gebruiken, alleen om een ​​"vreemdeling" te negeren, maar binnen de lus te blijven om hallo te zeggen tegen andere vrienden.

public class ForContinueExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
           if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
Het resultaat is:

Hello,Mike
Hello,Dustin
I don't chat with strangers
Hello,Lucas
Hello,Will
Uitstekend! We groetten alle vrienden, maar spraken niet met een vreemde.

Verbeterde versie van for loop of for-each

For-elk is een soort for-lus die wordt gebruikt wanneer u alle elementen van een array of verzameling moet verwerken. Eigenlijk wordt de uitdrukking voor-elk in deze cyclus niet gebruikt. De syntaxis is als volgt:

for (type itVar: array)
{
    Block of operators;
}
Waar type het type is van de iteratieve variabele (hetzelfde als het gegevenstype van de array), is ItVar de naam, array is de array of er kan een andere gegevensstructuur zijn, bijvoorbeeld ArrayList. Zoals u kunt zien, is er geen teller, de iteratievariabele itereert over de elementen van een array of verzameling, en niet over de indexwaarden. Wanneer zo'n lus wordt uitgevoerd, wordt aan de iteratievariabele achtereenvolgens de waarde van elk element van de array of verzameling toegewezen, waarna het opgegeven blok met instructies (of operator) wordt uitgevoerd. Let op: de for-each-lus kan worden toegepast op arrays en alle klassen die de java.lang.Iterable-interface implementeren. Laten we hetzelfde probleem oplossen met het begroeten van vrienden, vreemden ("Vreemde") negeren, maar deze keer gebruiken we for-elke lus.

public class ForEachExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
	//  for each loop, Java code
       for (String name : names) {
           if (name.equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("hello, " + name);
       }
   }
}
Om te versterken wat je hebt geleerd, raden we je aan een videoles van onze Java-cursus te bekijken
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION