JavaRush /Java Blogu /Random-AZ /Java-da hər bir döngə üçün

Java-da hər bir döngə üçün

Qrupda dərc edilmişdir

Java-da foreach nədir?

For-each, massivin və ya kolleksiyanın bütün elementlərini emal etmək lazım olduqda istifadə edilən for loop növüdür. “Hər biri üçün” ingilis dilindən “hamı üçün” kimi tərcümə olunur. Əslində foreach ifadəsi özü bu sikldə işlənmir. Onun sintaksisi aşağıdakı kimidir:
for (type itVar : array)
{
    Блок операторов;
}
İterativ dəyişənin növü haradadır type(massivdəki məlumat növü ilə eynidir!), itVaronun adıdır, arraymassivdir (başqa bir məlumat strukturu, bir növ kolleksiya da ola bilər, məsələn, ArrayList), yəni döngənin icra olunduğu obyekt. Gördüyünüz kimi, bu dizaynda sayğacdan istifadə edilmir; iterasiya dəyişəni indeks dəyərləri deyil, massiv və ya kolleksiyanın elementləri üzərində təkrarlanır. Belə bir döngəni yerinə yetirərkən, iterasiya dəyişəninə ardıcıl olaraq massivin və ya kolleksiyanın hər bir elementinin qiyməti təyin edilir, bundan sonra müəyyən edilmiş ifadələr bloku (və ya ifadə) yerinə yetirilir.

For-hər döngədən başqa, Java da forEach() metoduna malikdir. Bu barədə, məsələn, " Dövr yazmağı dayandırın!" məqaləsində oxuya bilərsiniz. Java 8-də kolleksiyalarla işləmək üçün ən yaxşı 10 ən yaxşı üsul

Diqqət:For-each döngəsi massivlərə və java.lang.Iterable interfeysini həyata keçirən istənilən siniflərə tətbiq oluna bilər. Yuxarıdakı kodun ekvivalenti aşağıdakı for loop olacaq :
for (int i=0; i<array.length; i++)
{

    Блок операторов;
}

Java misal üçün

Gəlin tələbə qiymətləri massivi yaradaq. Sonra, hər biri üçün istifadə edərək, bütün xalları çap edirik, orta balı göstəririk və maksimum balı tapırıq.
public class ForEachTest {

//method that prints all grades
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int num : grades) {

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

//method that displays the average score

public static double midGrade(int[] numbers) {
        int grade = 0;

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

    }
//method in which the best (maximum) score is calculated
    public static int bestGrade(int[] numbers) {
        int maxGrade = numbers[0];

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

public static void main(String[] args) {

//array of ratings
int[] grades = {5, 10, 7, 8, 9, 9, 10, 12};


  int highest_marks = bestGrade(grades);
        System.out.print("All the grades: ");
        printAllGrades(grades);
        System.out.println("The highest grade is " + highest_marks);
        System.out.println("The average grade is " + midGrade(grades));
    }

}
Proqram çıxışı:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
İndi gəlin görək bütün xalları çap etmək üçün adi for loopundan istifadə etməklə necə görünəcək:
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int i = 0; i < grades.length; i++) {

            System.out.print(grades[i] + "|");
        }
        System.out.println();
    }
Bu metodu metoddan çağırsaq main, nəticəni alacağıq:
All the grades: |5|10|7|8|9|9|10|12|

Kolleksiyalarla for-hər bir döngədən istifadə nümunəsi

Gəlin adlar toplusunu yaradaq və bütün adları ekranda göstərək.
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);
        }

Hər bir döngənin məhdudiyyətləri

For-her-in yığcam forması for-dan daha oxunaqlı hesab olunur və bunu etmək mümkün olan yerdə for-her-dən istifadə etmək yaxşı təcrübə hesab olunur. Bununla belə, hər biri üçün adi konstruksiyadan daha az universal quruluşdur. Burada hər biri üçün istifadənin ümumiyyətlə işləməyəcəyi və ya işləyəcəyi bir neçə sadə hal var, lakin çətinliklə.
  1. Başdan-başa bir döngədən keçmək istəyirsinizsə. Yəni, hər biri üçün aşağıdakı kodun birbaşa analoqu yoxdur:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. For-each не подходит, если вы хотите внести изменения в массив. Например, не получится организовать сортировку массива, не меняя его элементы местами. Или вот, в следующем codeе изменится не элемент массива, а только итерационная переменная:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. Если вы ищете элемент в массиве и вам нужно вернуть (or передать дальше) индекс искомого element, лучше воспользоваться обычным циклом for.

Полезное видео о for-each, подготовленное учеником JavaRush

Циклы в курсе JavaRush

На JavaRush к использованию циклов на практике приступают на 4 уровне квеста Java Syntax. Там им посвящено несколько лекций, а также множество задач разного уровня для закрепления навыков работы с ними. Вообще, никуда вы от них не денетесь, циклы — одна из важнейших конструкций в программировании.

Подробнее о for-each и циклах:

  1. For и For-Each Loop: сказ о том, How я итерировался, итерировался, да не выитерировался — хорошая подробная статья о циклах for и for-each в Java. Рассчитана на подготовленного читателя (примерно от 10 уровня JavaRush и выше).
  2. Оператор While. Статья посвящена самому простому циклу while, с которого начинается знакомство с циклами на JavaRush.
  3. Хватит писать циклы! Топ-10 лучших методов для работы с коллекциями в Java 8. Из этой статьи студент JavaRush, который уже прошёл половину курса or больше, узнает много интересного о работе с коллекциями.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION