JavaRush /Блоги Java /Random-TG /барои ҳар як ҳалқа дар Java

барои ҳар як ҳалқа дар Java

Дар гурӯҳ нашр шудааст

foreach дар Java чист?

For-each як навъи даври for мебошад, ки ҳангоми коркарди ҳамаи элементҳои массив ё коллексия истифода мешавад. "Барои ҳар" аз забони англисӣ ҳамчун "барои ҳама" тарҷума шудааст. Дар асл, ибораи foreach худ дар ин давра истифода намешавад. Синтаксиси он чунин аст:
for (type itVar : array)
{
    Блок операторов;
}
Навъи тағирёбандаи такроршаванда дар куҷост type(ҳамон навъи додаҳо дар массив!), itVarноми он аст, arrayмассив аст (инчунин метавонад сохтори дигари додаҳо, як намуди коллексия вуҷуд дошта бошад, масалан ArrayList), яъне an objectе, ки дар он давра иҷро карда мешавад. Тавре ки шумо мебинед, дар ин тарҳ ҳисобкунак истифода намешавад; тағирёбандаи итератсия дар болои элементҳои массив ё коллексия такрор мешавад, на арзишҳои индекс. Њангоми иљрои чунин давра ба таѓйирёбандаи такрорї пайдарпай арзиши њар як элементи массив ё коллексия дода мешавад, ки баъд аз он блоки муќарраршудаи оператор (ё оператор) иљро мешавад.

Ба ғайр аз даври for-ҳар, Java инчунин усули forEach() дорад. Шумо метавонед дар ин бора, масалан, дар мақолаи " Навиштани давраҳоро бас кунед!" Top 10 Усулҳои беҳтарин барои кор бо коллексияҳо дар Java 8

Диққат:Барои ҳар як ҳалқа метавонад ба массивҳо ва ҳама синфҳое, ки интерфейси java.lang.Iterable-ро амалӣ мекунанд, татбиқ карда шавад. Эквиваленти codeи дар боло овардашуда ин барои loop хоҳад буд :
for (int i=0; i<array.length; i++)
{

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

Намунаи Java foreach

Биёед як қатор баҳои донишҷӯёнро эҷод кунем. Сипас, бо истифода аз барои ҳар як, мо ҳамаи холҳоро чоп мекунем, холҳои миёнаро нишон медиҳем ва холҳои максималиро пайдо мекунем.
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));
    }

}
Натиҷаи барнома:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
Акнун биёед бубинем, ки усули чопи ҳамаи холҳо бо истифода аз даври муқаррарии for иҷрошуда чӣ гуна хоҳад буд:
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();
    }
Агар мо ин усулро аз метод даъват кунем main, мо натиҷа мегирем:
All the grades: |5|10|7|8|9|9|10|12|

Намунаи истифодаи як ҳалқа барои ҳар як бо коллексияҳо

Биёед коллексияи номҳоро эҷод кунем ва ҳамаи номҳоро дар экран нишон диҳем.
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);
        }

Маҳдудиятҳои барои ҳар як ҳалқа

Шакли паймоне, ки барои ҳар як назар ба барои хондан бештар хонда мешавад ва таҷрибаи хубе ҳисобида мешавад, ки барои ҳар ҷое, ки онро иҷро кардан мумкин аст, истифода шавад. Бо вуҷуди ин, барои ҳар як сохтори камтар универсалӣ нисбат ба муқаррарӣ барои. Инҳоянд чанд ҳолатҳои оддӣ, ки истифодаи for-her тамоман кор намекунад ё кор хоҳад кард, аммо бо душворӣ.
  1. Агар шумо хоҳед, ки як ҳалқаро аз охир то аввал гузаред. Яъне, барои ҳар як аналоги мустақими codeи зерин вуҷуд надорад:

    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 больше, узнает много интересного о работе с коллекциями.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION