JavaRush /وبلاگ جاوا /Random-FA /برای هر حلقه در جاوا

برای هر حلقه در جاوا

در گروه منتشر شد

foreach در جاوا چیست؟

For-each نوعی حلقه for است که برای پردازش تمام عناصر یک آرایه یا مجموعه استفاده می شود. "برای هر" از انگلیسی به عنوان "برای همه" ترجمه شده است. در واقع، خود عبارت foreach در این چرخه استفاده نمی شود. نحو آن به شرح زیر است:
for (type itVar : array)
{
    Блок операторов;
}
نوع typeمتغیر تکرار شونده (همان نوع داده در آرایه!)، itVarنام آن است، arrayآرایه است (ممکن است ساختار داده دیگری، نوعی مجموعه، مثلاً وجود داشته باشد ArrayList)، یعنی شیئی که حلقه بر روی آن اجرا می شود. همانطور که می بینید، در این طراحی از شمارنده استفاده نمی شود؛ متغیر تکرار روی عناصر یک آرایه یا مجموعه تکرار می شود و نه مقادیر شاخص. هنگام اجرای چنین حلقه ای، به متغیر تکرار به صورت متوالی مقدار هر عنصر آرایه یا مجموعه اختصاص داده می شود، پس از آن بلوک مشخص شده از دستورات (یا دستورات) اجرا می شود.

به غیر از حلقه for-each، جاوا یک متد ()forEach نیز دارد. می توانید در مورد آن بخوانید، به عنوان مثال، در مقاله " چرخه های نوشتن را متوقف کنید!" 10 روش برتر برای کار با مجموعه ها در جاوا 8

توجه:حلقه for-each را می توان برای آرایه ها و هر کلاسی که رابط java.lang.Iterable را پیاده سازی می کند، اعمال کرد. معادل کد بالا به صورت حلقه for زیر خواهد بود :
for (int i=0; i<array.length; i++)
{

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

جاوا برای مثال

بیایید یک آرایه از نمرات دانش آموزان ایجاد کنیم. سپس با استفاده از هر کدام، تمام نمرات را چاپ می کنیم، میانگین امتیاز را نمایش می دهیم و حداکثر امتیاز را پیدا می کنیم.
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-each خواناتر از for در نظر گرفته می‌شود، و استفاده از هر یک در جایی که می‌توان آن را انجام داد، تمرین خوبی در نظر گرفته می‌شود. با این حال، برای هر یک ساختار کمتر تطبیق پذیر نسبت به معمولی برای است. در اینجا چند مورد ساده وجود دارد که استفاده از هر کدام به هیچ وجه کار نمی کند یا کار می کند، اما به سختی.
  1. اگر می خواهید از یک حلقه از انتها به ابتدا عبور کنید. یعنی هیچ آنالوگ مستقیمی برای کد زیر وجود ندارد:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. اگر بخواهید در یک آرایه تغییراتی ایجاد کنید، برای هر کدام مناسب نیست. به عنوان مثال، مرتب کردن یک آرایه بدون تعویض عناصر آن ممکن نخواهد بود. یا در کد زیر، عنصر آرایه نیست که تغییر می کند، بلکه فقط متغیر تکرار تغییر می کند:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. اگر به دنبال عنصری در یک آرایه هستید و باید شاخص عنصر مورد نظر خود را برگردانید (یا به آن منتقل کنید)، بهتر است از یک حلقه for معمولی استفاده کنید.

ویدیوی مفید در مورد هر یک که توسط یک دانش آموز JavaRush تهیه شده است

حلقه در دوره JavaRush

در JavaRush، ما شروع به استفاده از حلقه ها در سطح 4 از جستجوی Java Syntax می کنیم . چندین سخنرانی به آنها و همچنین وظایف بسیاری در سطوح مختلف برای تقویت مهارت های کار با آنها اختصاص داده شده است. به طور کلی، شما نمی توانید از آنها فرار کنید؛ حلقه ها یکی از مهم ترین سازه ها در برنامه نویسی هستند.

اطلاعات بیشتر در مورد برای هر و حلقه ها:

  1. برای و برای هر حلقه: داستان چگونگی تکرار، تکرار، اما تکرار نشدن - یک مقاله مفصل خوب در مورد حلقه‌های for و برای هر در جاوا. طراحی شده برای یک خواننده آموزش دیده (تقریبا JavaRush سطح 10 و بالاتر).
  2. در حالی که بیانیه . این مقاله به ساده ترین چرخه اختصاص دارد whileکه با آن شروع به آشنایی با چرخه ها در JavaRush می کنید.
  3. چرخه های نوشتن را متوقف کنید! 10 روش برتر برای کار با مجموعه ها در جاوا 8 . از این مقاله، یک دانشجوی JavaRush که قبلاً نیمی از دوره یا بیشتر را گذرانده است، چیزهای زیادی در مورد کار با مجموعه ها خواهد آموخت.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION