CodeGym /Java-blogg /Tilfeldig /For hver sløyfe i Java
John Squirrels
Nivå
San Francisco

For hver sløyfe i Java

Publisert i gruppen

Hva er en for hver sløyfe?

En for-hver er en slags for- løkke som du bruker når du skal behandle alle elementene i en matrise eller samling. Når det er sagt, brukes ikke uttrykket for-hver i denne loopen. Syntaksen er som følger:

for (type itVar : array) 
{ 
    // Operations
}
Der type er typen til iteratorvariabelen (som samsvarer med datatypen til elementene i arrayen!), er itVar navnet, og array er en array (andre datastrukturer er også tillatt, for eksempel en slags samling, som ArrayList ), dvs. objektet som løkken utføres på. Som du kan se, bruker ikke denne konstruksjonen en teller: iteratorvariabelen itererer ganske enkelt over elementene i matrisen eller samlingen. Når en slik sløyfe utføres, blir iteratorvariabelen sekvensielt tildelt verdien til hvert element i arrayen eller samlingen, hvoretter den spesifiserte blokken med setninger (eller setningen) utføres.

I tillegg til for-each-løkken har Java også en forEach()-metode. Du kan lese om det i artikkelen med tittelen "Slutt å skrive looper!" Topp 10 beste fremgangsmåter for å jobbe med samlinger i Java 8

Merk:en for-hver- løkke kan brukes på arrays og alle klasser som implementerer java.lang.Iterable -grensesnittet. Følgende for loop vil tilsvare koden ovenfor:

for (int i=0; i < array.length; i++) 
{ 
    
    // Statements 
}

Eksempel på en for-hver-løkke

Vi lager en rekke studentpoeng. Deretter bruker vi en for-hver- løkke for å skrive ut alle estimatene, beregne gjennomsnittsskåren og finne toppskåren.

public class ForEachTest {
    
// A method that prints all scores     
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int num : scores) {

            System.out.print(num + "|");
        }
        System.out.println();
    }

// A method that displays the average score 
    
public static double getAverageScore(int[] numbers) {
        int totalScore = 0;

        for (int num : numbers) {
            totalScore = num + totalScore;
        }
        return ((double) totalScore / numbers.length);

    }
// A method that determines the best (maximum) score 
    public static int getBestScore(int[] numbers) {
        int maxScore = numbers[0];

        for (int num : numbers) {
            if (num > maxScore) {
                maxScore = num;
            }
        }
        return maxScore;
    }

public static void main(String[] args) {
      
// Array of scores 
int[] scores = {5, 10, 7, 8, 9, 9, 10, 12};

        
  int bestScore = getBestScore(scores);
        System.out.print("All the scores: ");
        printAllScores(scores);
        System.out.println("The highest score is " + bestScore);
        System.out.println("The average score is " + getAverageScore(scores));
    }

}
Programutgang:

All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
La oss nå se hvordan en metode for å skrive ut alle partiturene ville sett ut hvis vi brukte en ordinær for- løkke:

public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int i = 0; i < scores.length; i++) {

            System.out.print(scores[i] + "|");
        }
        System.out.println();
    }
Hvis vi kaller denne metoden fra hovedmetoden , får vi dette resultatet:

All the scores: |5|10|7|8|9|9|10|12|

Eksempel på en for-hver-løkke med samlinger

Vi lager en samling av navn og viser alle navnene på skjermen.

List<String> names = new ArrayList<>();
        names.add("Snoopy");
        names.add("Charlie");
        names.add("Linus");
        names.add("Shroeder");
        names.add("Woodstock");

        for(String name : names){
            System.out.println(name);
        }

Begrensninger for en for hver sløyfe

For -hver- løkkens kompakte form anses som lettere å lese enn en for- løkke, og det anses som beste praksis å bruke en for-hver- løkke der det er mulig. Imidlertid er en for-hver- løkke en mindre universell konstruksjon enn en vanlig for- løkke. Her er noen enkle tilfeller der en for-hver- løkke enten ikke vil fungere i det hele tatt eller vil fungere, men bare med vanskeligheter.
  1. Hvis du vil løpe gjennom en løkke fra slutten til begynnelsen. Det vil si at det ikke er noen for hver sløyfe som er en direkte analog til følgende kode:

    
    for (int i= array.length-1; i>0; i--) 
    {
          System.out.println(array[i]);
    }
    
  2. For-each er ikke egnet hvis du ønsker å gjøre endringer i en matrise. Du kan for eksempel ikke sortere en matrise uten å endre plasseringen av elementene. I tillegg, i følgende kode, vil bare iteratorvariabelen endres, ikke elementet i matrisen:

    
    for (int itVar : array) 
    {
        itVar = itVar++; 
    }
    
  3. Hvis du leter etter et element i en matrise og du trenger å returnere (eller sende videre) indeksen til elementet du leter etter, så er det bedre å bruke en ordinær for loop.

En nyttig video om for-hver-løkken

Løkker i CodeGym-kurset

På CodeGym begynner vi å øve på å bruke loops på nivå 4 av Java Syntax-oppdraget . Flere av leksjonene på det nivået, så vel som mange av oppgavene på ulike nivåer, er viet til loops for å styrke ferdighetene dine i å jobbe med dem. I utgangspunktet er det ingen måte du kan unnslippe dem - løkker er en av de viktigste konstruksjonene i programmering.

Mer informasjon om for-hver og andre løkker

  1. Mens uttalelsen . Artikkelen handler om den enkleste typen loop: loopen while, som CodeGym bruker for å introdusere looper for studenter.
  2. Slutt å skrive looper! Topp 10 beste fremgangsmåter for å jobbe med samlinger i Java 8 . Denne artikkelen vil hjelpe CodeGym-studenter som er minst halvveis i kurset med å lære mange interessante ting om å jobbe med samlinger.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION