CodeGym /وبلاگ جاوا /Random-FA /برای هر حلقه در جاوا
John Squirrels
مرحله
San Francisco

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

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

حلقه برای هر کدام چیست؟

برای هر یک نوعی حلقه for است که زمانی که نیاز به پردازش تمام عناصر یک آرایه یا مجموعه دارید از آن استفاده می کنید. گفتنی است، عبارت for-eve در واقع در این حلقه استفاده نمی شود. نحو آن به شرح زیر است:
for (type itVar : array)
{
    // Operations
}
در جایی که type نوع متغیر تکرارکننده است (که با نوع داده عناصر موجود در آرایه مطابقت دارد!)، itVar نام آن است و آرایه یک آرایه است (سایر ساختارهای داده نیز مجاز هستند، به عنوان مثال، نوعی مجموعه، مانند ArrayList . ) یعنی شی ای که حلقه روی آن اجرا می شود. همانطور که می بینید، این ساختار از شمارنده استفاده نمی کند: متغیر تکرار کننده به سادگی روی عناصر آرایه یا مجموعه تکرار می شود. هنگامی که چنین حلقه ای اجرا می شود، متغیر iterator به صورت متوالی مقدار هر عنصر آرایه یا مجموعه را به آن اختصاص می دهد، پس از آن بلوک مشخص شده از دستورات (یا دستورات) اجرا می شود.

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

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

    // Statements
}

مثالی از یک حلقه برای هر

ما آرایه ای از نمرات دانش آموزان ایجاد می کنیم. سپس از یک حلقه برای هر یک برای چاپ تمام تخمین ها، محاسبه میانگین امتیاز و یافتن امتیاز برتر استفاده می کنیم.
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));
    }

}
خروجی برنامه:
All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
حال، بیایید ببینیم اگر از یک حلقه for معمولی استفاده کنیم، روشی برای چاپ همه امتیازها چگونه خواهد بود :
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();
    }
اگر این متد را از متد اصلی فراخوانی کنیم ، این نتیجه را بدست می آوریم:
All the scores: |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 خوانده می‌شود ، و بهترین روش استفاده از حلقه برای هر حلقه در هر کجا که ممکن است در نظر گرفته می‌شود. با این حال، یک حلقه برای هر یک ساختار جهانی کمتر از یک حلقه for معمولی است . در اینجا چند مورد ساده وجود دارد که در آن یک حلقه برای هر یا اصلا کار نمی کند یا کار می کند، اما فقط با مشکل.
  1. اگر می خواهید از یک حلقه از انتها به ابتدا عبور کنید. یعنی هیچ حلقه ای برای هر حلقه وجود ندارد که آنالوگ مستقیم کد زیر باشد:

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

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

یک ویدیوی مفید در مورد حلقه برای هر

حلقه در دوره CodeGym

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

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

  1. بیانیه while . این مقاله در مورد ساده ترین نوع حلقه است: whileحلقه، که CodeGym از آن برای معرفی حلقه ها به دانش آموزان استفاده می کند.
  2. حلقه نوشتن را متوقف کنید! 10 روش برتر برای کار با مجموعه ها در جاوا 8 . این مقاله به دانشجویان CodeGym که حداقل در نیمه راه هستند کمک می کند تا چیزهای جالب زیادی در مورد کار با مجموعه ها بیاموزند.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION