در حال بارگذاری...

break و continue در Java

i را از ۱ تا ۵ حلقه بزنید. وقتی i برابر ۳ شد، قبل از چاپ با break از حلقه بیرون بیایید. صفحه باید فقط دو خط نشان دهد: ۱، بعد ۲. این توقف زودهنگام یک ابزار این صفحه است. ابزار دیگر continue است که یک دور را رد می‌کند و حلقه را ادامه می‌دهد تا ۳ چاپ نشود ولی ۴ و ۵ هنوز چاپ شوند.

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

یک برنامهٔ کوچک با نام Skip.java بسازید. public class روی خط اول باید با نام فایل یکی باشد: public class Skip. نام کلاس قدیمی Pulse یا Beat را در این فایل نگه ندارید؛ کامپایلر انتظار دارد نام کلاس و نام فایل جور باشند.
داخل main یک for بنویسید که بتواند زود بایستد:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
break;
}
System.out.println(i);
}
سرِ for همان شکلی است که از قبل می‌دانید: شروع، آزمون، گام. داخل آکولاد یک if می‌پرسد آیا i برابر ۳ است. وقتی true باشد، break; اجرا می‌شود. break کل حلقهٔ for را یک‌جا ترک می‌کند. println زیر if در آن دور اجرا نمی‌شود و i داخل این حلقه به ۴ یا ۵ نمی‌رسد. وقتی i برابر ۱ یا ۲ است، if برابر false است، پس println(i) عدد را می‌نویسد. قبل از کامپایل فایل را ذخیره کنید.

برنامه‌ای که با break می‌ایستد

این همان نسخه‌ای است که اول کامپایل می‌کنید.

break وقتی i برابر ۳ است

java
public class Skip {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i = i + 1) {
            if (i == 3) {
                break;
            }
            System.out.println(i);
        }
    }
}

در پوشه‌ای که Skip.java آنجاست بنویسید javac Skip.java. وقتی پرانتز و آکولاد و نقطه‌ویرگول‌ها جور باشند، javac خودش خطی نمی‌نویسد. بعد بنویسید java Skip — نه java Skip.java. پسوند .java را از فرمان دوم بردارید. همین دو فرمان در Windows و macOS یکی است؛ این صفحه املای پوستهٔ جدا برای هیچ‌کدام نمی‌خواهد. برنامه باید دو خط چاپ کند و تمام شود: ۱، بعد ۲. منتظر تایپ شما نمی‌ماند. اگر ترمینال منتظر ماند، هنوز nextLine از تمرین قدیمی داخل فایل است. آن را پاک کنید و for به‌همراه break بالا را نگه دارید. برای خط اشتباه روی صفحه لازم نیست JDK را دوباره نصب کنید.

اجرای break را به ترتیب بخوانید. i از ۱ شروع می‌شود. if برابر false است، پس println عدد ۱ را می‌نویسد. گام ۲ را نگه می‌دارد. if دوباره false است، پس println عدد ۲ را می‌نویسد. گام ۳ را نگه می‌دارد. حالا i == 3 برابر true است، پس break اجرا می‌شود و for تمام می‌شود. برای ۳ و ۴ و ۵ چیزی چاپ نمی‌شود. حلقهٔ ساده بدون break پنج خط چاپ می‌کرد؛ break بعد از دو چاپ حلقه را کوتاه کرد. بعد از break در آن دور گام اجرا نمی‌شود و آزمون دوباره پرسیده نمی‌شود، چون حلقه دیگر تمام شده است.

continue یک دور را رد می‌کند

بدنه را عوض کنید تا continue جای break بنشیند و println را بعد از if نگه دارید:
for (int i = 1; i <= 5; i = i + 1) {
if (i == 3) {
continue;
}
System.out.println(i);
}
وقتی i برابر ۳ است، continue; بقیهٔ آن دور را — از جمله println — رد می‌کند و for به گام و آزمون بعدی می‌رود. خودِ حلقه تمام نمی‌شود. صفحه باید چهار خط نشان دهد: ۱، ۲، ۴ و ۵. جای خالی همان جایی است که ۳ می‌توانست باشد.

continue وقتی i برابر ۳ است

java
public class Skip {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i = i + 1) {
            if (i == 3) {
                continue;
            }
            System.out.println(i);
        }
    }
}

دوباره کامپایل و اجرا کنید: javac Skip.java و بعد java Skip. باید چهار خط ببینید. سرِ for را عوض نکردید — فقط break تبدیل به continue شد. وقتی چهار خط را دیدید، اگر می‌خواهید دموی اول برگردد، break را برگردانید. هر دو نسخه Java درست‌اند. دو حرکت زودهنگام متفاوت را داخل همان شکل حلقه نشان می‌دهند.

اجرای continue را یک‌بار دیگر بخوانید. i می‌رود ۱، ۲، ۳، ۴، ۵. برای ۱ و ۲، if برابر false است و عددها چاپ می‌شوند. برای ۳، continue مقدار println را رد می‌کند. برای ۴ و ۵ دوباره عددها چاپ می‌شوند. حلقه هنوز وقتی i برابر ۶ شد با توقف عادی خودش تمام می‌شود. continue هرگز for را تمام نمی‌کند؛ فقط بقیهٔ یک دور را رد می‌کند. بعد از continue، for هنوز گام i = i + 1 را اجرا می‌کند، پس شمارنده جلو می‌رود حتی اگر آن دور چیزی چاپ نکرده باشد.

📊 ابزار و صفحه

ابزار در i == 3 صفحه
break ۱ بعد ۲
continue ۱ بعد ۲ بعد ۴ بعد ۵

جدول را بعد از یک اجرا چک کنید، نه به‌جای اجرا. break دو خط می‌گذارد. continue چهار خط می‌گذارد با ۳ جاافتاده. اگر وقتی منظورتان continue بود هنوز ۳ ظاهر شد، احتمالاً println بالای if است — println را زیر continue ببرید تا رد شدن به آن برسد. ترتیب را درست کنید؛ Java را دوباره نصب نکنید.

چند قاعده که دو ابزار را روشن نگه می‌دارد

break و continue مال داخل بدنهٔ حلقه‌اند. نوشتن break; تنها در main بدون for یا while بیرونی را javac قبول نمی‌کند. برای continue; هم همین است. روی این صفحه یک if لحظه را انتخاب می‌کند: وقتی i برابر ۳ است. بعداً می‌توانید آزمون‌های دیگر بنویسید؛ دموها i == 3 را نگه می‌دارند تا تغییر صفحه راحت دیده شود.

break همان continue نیست. break حلقه را تمام می‌کند. continue یک دور را رد می‌کند و داخل حلقه می‌ماند. هیچ‌کدام اینجا همان breakِ صفحهٔ switch نیستند به شکلی که آنجا دیدید — اینجا ساختار بیرونی یک for است. while صفحهٔ Pulse که فقط می‌شمارد، یا for صفحهٔ Beat بدون if را داخل همان main نگه ندارید و بعد تعجب نکنید چرا همهٔ عددهای ۱ تا ۵ هنوز چاپ می‌شوند. main این جلسه for به‌همراه if با break یا continue را نگه می‌دارد.

اشتباه رایج این است که خودِ کلمه را چاپ کنید: System.out.println("break");. آن خط نویسه‌های break را می‌نویسد و حلقه‌ای را متوقف نمی‌کند. اشتباه دیگر گذاشتن println(i); قبل از ifی است که continue دارد؛ آن وقت ۳ هنوز چاپ می‌شود و بعد continue اجرا می‌شود در حالی که چیزی برای رد کردن نمانده. در هر دو دمو println را بعد از if نگه دارید. اگر continue را بدون حلقهٔ بیرونی بنویسید، javac خطا می‌دهد؛ برای break تنها بیرون هر حلقه هم همین است. روی شکل این درس این دو کلمه فقط داخل بدنهٔ حلقه معنا دارند.

حالا چه کار می‌توانید بکنید

می‌توانید داخل حلقه break بگذارید تا زود بیرون بیایید، یا continue تا یک دور را رد کنید و ادامه دهید. یک if می‌تواند زمان آن را انتخاب کند. صفحهٔ بعد for-each است؛ آنجا حلقه هر مقدار یک مجموعه را می‌پیماید بدون اینکه شروع و آزمون و گام را مثل قبل با دست بنویسید.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
5
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود