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

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

در گروه منتشر شد
جاوا مانند بسیاری از زبان های برنامه نویسی دیگر از حلقه های تودرتو پشتیبانی می کند. این به معنای فقط یک حلقه در یک حلقه است. در این مقاله قصد داریم با نحوه کار با حلقه های تو در تو در جاوا آشنا شویم.

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

یک حلقه اگر در داخل حلقه دیگری قرار گیرد تودرتو نامیده می شود. در اولین گذر، حلقه بیرونی حلقه داخلی را فراخوانی می‌کند، که تا تکمیل ادامه می‌یابد، پس از آن کنترل به بدنه حلقه بیرونی منتقل می‌شود. در پاس دوم، حلقه بیرونی دوباره حلقه داخلی را فرا می خواند. و به همین ترتیب تا زمانی که حلقه بیرونی به پایان برسد. چهار نوع حلقه در جاوا وجود دارد:
  • برای حلقه

  • حلقه while

  • انجام ... در حالی که حلقه

  • برای هر حلقه

همه آنها از حلقه های تودرتو پشتیبانی می کنند. ساختارهای حلقه تودرتو زمانی استفاده می شوند که دو شرط باید برآورده شوند، یکی بسته به دیگری. به عنوان مثال، اگر شما نیاز به نمایش یک ماتریس دو بعدی، یک نیمه هرم یا یک جدول ضرب دارید.

نحوه کار حلقه های تو در تو جاوا

احتمالاً بیشترین استفاده از حلقه در جاوا برای است ، تا حد زیادی به این دلیل که کاملاً همه کاره است و کدهای موجود در آن به راحتی قابل خواندن هستند. در اینجا نحو کلی برای حلقه تو در تو است :

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
او چگونه کار می کند؟ حلقه بیرونی شروع می شود. سپس حلقه for تو در تو کار را شروع می کند و از اندیس خود می گذرد تا شرط برقرار شود و دوباره کار را به حلقه بیرونی منتقل می کند و تا زمانی که شرط حلقه بیرونی برآورده شود این اتفاق می افتد. کمی مشکل به نظر می رسد، اینطور نیست؟ خوب، درک آن با یک مثال خاص بسیار ساده تر خواهد بود، پس بیایید به آن برویم.

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

در اینجا یک مثال کلاسیک است. بیایید یک نیم هرم را با استفاده از دو حلقه برای چاپ کنیم. یکی از آنها تودرتو است.

public class NestedLoopsDemo1 {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j<=i;  j++)
               System.out.print("*");
           System.out.println();
       }
      
   }
}
خروجی این است:
***************************************************************** *****

مثال کد حلقه تو در تو


public class NestedLoopsDemo2 {

   public static void main(String[] args) {

       int i = 0;
       while (i < 10) {
           int j = 0;
           while (j <= i) {
               System.out.print("*");
               j++;
           }
           System.out.println();
           i++;

       }
   }
}
خروجی دقیقاً مانند مثال قبلی است:
***************************************************************** *****
حلقه do...while شبیه حلقه while است . تفاوت اصلی این است که بدنه حلقه do...whil یک بار قبل از بررسی عبارت اجرا می شود.

نمونه کد حلقه های تو در تو

برای-هر حلقه را می توان مانند حلقه for معمول تودرتو کرد . در اینجا مثالی برای حلقه تودرتو برای هر حلقه است که آرایه دو بعدی را تکرار می کند.

public class NestedLoops2 {

       public static void main(String[] args)
       {
           int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };

           for (int[] myArray : mainArray)
           {
               for (int i : myArray)
               {
                   System.out.print(i+" ");
               }
               System.out.println("");
           }
       }
}
خروجی این است:
5 4 3 2 1 7 8 9 10 11

مثال حلقه مخلوط برای و while

گاهی اوقات می توانیم انواع مختلف حلقه ها را در داخل یکدیگر لانه کنیم. به عنوان مثال، برای داخل در حالی که یا برای داخل برای هر . با این حال، این بهترین تمرین برنامه نویسی نیست. چنین ساختارهایی به میزان قابل توجهی خوانایی کد را مختل می کند. بنابراین برنامه نویسان حرفه ای سعی می کنند یکی را با دیگری مخلوط نکنند. خوب، آنها انجام می دهند، اما فقط در صورتی که واقعاً مورد نیاز باشد. و یک قانون کوچک دیگر: اگر بین while و for انتخاب می‌کنید ، تا جایی که ممکن است استفاده کنید. با این وجود، در اینجا نمونه ای از استفاده از حلقه for در داخل while را داریم . بیایید دوباره نیمه هرم خود را بسازیم.

public class NestedLoopsDemo2 {

   public static void main(String[] args) {
       int i = 0;
       while (i < 10) {
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
           }
           System.out.println();
           i++;

       }
   }
}
خروجی بدون تعجب است:
***************************************************************** *****
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION