"

آموزش دستور break در جاوا,دستور Break در جاوا (Java) چیست؟,تکنیک پیشرفته break با برچسب (Labeled Break)

آموزش دستور break در جاوا

دستور break در جاوا برای خروج فوری از حلقه یا switch استفاده می‌شود. جریان برنامه را متوقف و از حلقه خارج می‌کند.

تیم تحریریه
4
0
11 اردیبهشت 1405
لینک کوتاه

دستور Break در جاوا (Java) چیست؟

دستور break در جاوا یک کلمه کلیدی کنترلی است که برای خروج فوری و اجباری از یک حلقه (for, while, do-while) یا از یک بلوک switch استفاده می‌شود.
وقتی برنامه به دستور break می‌رسد، بلافاصله جریان اجرا را از حلقه یا switch خارج کرده و به اولین خط کد بعد از آن‌ها منتقل می‌کند.

مثال کد ساده:

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break; // وقتی i به 5 رسید، حلقه را متوقف کن
    }
    System.out.print(i + " ");
}
// خروجی: 1 2 3 4

در این مثال، به محض اینکه i برابر 5 می‌شود، دستور break اجرا شده و حلقه خاتمه می‌یابد، در نتیجه اعداد 5 تا 10 هرگز چاپ نمی‌شوند.




دستور Break در جاوا (Java) چیست؟




break در مقایسه با continue و return

برای درک بهتر break، ابتدا باید تفاوت آن با دو عبارت کنترلی دیگر را بدانید:

دستور     عملکرد مثال
break    به طور کامل از حلقه خارج می‌شود (پایان کار حلقه)      while(true){ if(x==5) break; }
continue    فقط یک تکرار (iteration) را نادیده می‌گیرد و به تکرار بعدی می‌رود for(i=0;i<10;i++){ if(i%2==0) continue; }
return     از کل متد خارج می‌شود و مقدار را برمی‌گرداند  ;if(error) return -1
    

     

🚀 از صفر تا قهرمان جاوا، فقط با یک دوره!
به دنبال یه فرصت طلایی برای شروع برنامه‌نویسی می‌گردی؟
دوره آموزشی جاوا ما، همون چیزیه که نیاز داری!

✨ چرا این دوره رو انتخاب می‌کنی؟
🎯 از مبتدی تا حرفه‌ای
بدون پیش‌زمینه شروع می‌کنی و به یه برنامه‌نویس جاوا تبدیل می‌شی که بازار کار منتظرته!

🛠 پروژه‌محور و عملی
با انجام پروژه‌های واقعی، کدنویسی رو یاد می‌گیری، نه فقط تئوری!

👨‍🏫 پشتیبانی همیشگی
هرجا گیر کنی، تیم پشتیبانی کنارته تا مشکلت حل بشه.

🔓 دسترسی مادام‌العمر
هر وقت خواستی به محتوا دسترسی داری، برای همیشه!

 

🔥 همین حالا ثبت‌نام کن 






   

کاربرد اصلی 1: خروج از حلقه for با break

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

مثال کاربردی: پیدا کردن اولین عدد بخش‌پذیر بر 7


public class FindDivisibleBy7 {
    public static void main(String[] args) {
        int[] numbers = {23, 45, 67, 49, 81, 92, 105, 33};
        int foundNumber = -1;
        
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] % 7 == 0) {
                foundNumber = numbers[i];
                break; // اولین عددی که بر 7 بخش‌پذیر است را پیدا کردیم
            }
        }
        
        if (foundNumber != -1) {
            System.out.println("اولین عدد بخش‌پذیر بر 7: " + foundNumber);
        } else {
            System.out.println("هیچ عددی بر 7 بخش‌پذیر نیست.");
        }
    }
}
// خروجی: اولین عدد بخش‌پذیر بر 7: 49

مثال کاربردی: اعتبارسنجی رمز عبور با محدودیت تلاش

 

import java.util.Scanner;

public class PasswordValidator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String correctPassword = "java123";
        int maxAttempts = 3;
        
        for (int attempt = 1; attempt <= maxAttempts; attempt++) {
            System.out.print("رمز عبور خود را وارد کنید (تلاش " + attempt + "): ");
            String input = scanner.nextLine();
            
            if (input.equals(correctPassword)) {
                System.out.println("✅ دسترسی مجاز است. خوش آمدید!");
                break; // رمز درست بود، دیگر نیازی به تلاش بیشتر نیست
            } else {
                System.out.println("❌ رمز اشتباه است!");
                if (attempt == maxAttempts) {
                    System.out.println("حساب شما قفل شد.");
                }
            }
        }
        scanner.close();
    }
}


کاربرد اصلی 2: خروج از حلقه while با break

در حلقه‌های while که شرط خروج ممکن است از ابتدا مشخص نباشد، break یک ابزار حیاتی برای جلوگیری از حلقه‌های بی‌نهایت است.

مثال واقعی: پردازش ورودی تا دریافت دستور "exit"

import java.util.Scanner;

public class CommandProcessor {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String command;
        
        while (true) { // حلقه بی‌نهایت عمدی
            System.out.print("> ");
            command = scanner.nextLine();
            
            if (command.equalsIgnoreCase("exit")) {
                System.out.println("خروج از برنامه...");
                break; // خروج از حلقه
            } else if (command.equalsIgnoreCase("help")) {
                System.out.println("دستورات موجود: help, exit, date");
            } else if (command.equalsIgnoreCase("date")) {
                System.out.println("تاریخ امروز: " + java.time.LocalDate.now());
            } else {
                System.out.println("دستور نامعتبر! برای راهنما help را وارد کنید.");
            }
        }
        scanner.close();
    }
}

مثال کاربردی: جستجو در آرایه دو بعدی
public class SearchIn2DArray {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 4, 7, 11},
            {2, 5, 8, 12},
            {3, 6, 9, 16},
            {10, 13, 14, 17}
        };
        int target = 8;
        boolean found = false;
        int rowIndex = 0, colIndex = 0;
        
        outerloop: // برچسب (label) برای حلقه بیرونی
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] == target) {
                    found = true;
                    rowIndex = i;
                    colIndex = j;
                    break outerloop; // خروج از هر دو حلقه
                }
            }
        }
        
        if (found) {
            System.out.println("عدد " + target + " در سطر " + rowIndex + " و ستون " + colIndex + " پیدا شد.");
        } else {
            System.out.println("عدد پیدا نشد.");
        }
    }
}
// خروجی: عدد 8 در سطر 1 و ستون 2 پیدا شد.

کاربرد اصلی 3: break در حلقه do-while

حلقه do-while حداقل یکبار اجرا می‌شود. break در اینجا نیز مانند سایر حلقه‌ها عمل می‌کند.


public class DoWhileBreak {
    public static void main(String[] args) {
        int number = 1;
        do {
            System.out.print(number + " ");
            number++;
            if (number > 5) {
                break; // بعد از چاپ 1 تا 4، در عدد 5 حلقه خاتمه می‌یابد
            }
        } while (number <= 10);
        System.out.println("\nحلقه در عدد " + number + " متوقف شد.");
    }
}
// خروجی: 1 2 3 4 
// حلقه در عدد 5 متوقف شد.

کاربرد ویژه break در switch statement

قبل از جاوا 12، break برای جلوگیری از fall-through در بلوک‌های switch ضروری بود. (در نسخه‌های جدید با switch expression می‌توان از -> استفاده کرد که نیاز به break ندارد)

مثال کلاسیک با break:

public class SwitchWithBreak {
    public static void main(String[] args) {
        int dayNumber = 3;
        String dayName;
        
        switch (dayNumber) {
            case 1:
                dayName = "Saturday";
                break; // بدون break، کد case 2 هم اجرا می‌شد
            case 2:
                dayName = "Sunday";
                break;
            case 3:
                dayName = "Monday";
                break;
            case 4:
                dayName = "Tuesday";
                break;
            case 5:
                dayName = "Wednesday";
                break;
            case 6:
                dayName = "Thursday";
                break;
            case 7:
                dayName = "Friday";
                break;
            default:
                dayName = "Invalid day";
                break;
        }
        System.out.println("Day " + dayNumber + " is " + dayName);
    }
}
// خروجی: Day 3 is Monday

تکنیک پیشرفته break با برچسب (Labeled Break)

در حلقه‌های تو در تو، break معمولی فقط از داخلی‌ترین حلقه خارج می‌شود. اما با استفاده از برچسب (label) می‌توانید مشخص کنید از کدام حلقه خارج شوید.

مثال: جستجو در ماتریس و خروج از همه حلقه‌ها

public class LabeledBreakExample {
    public static void main(String[] args) {
        int[][] data = {
            {10, 20, 30},
            {40, 50, 60},
            {70, 80, 90}
        };
        int searchFor = 50;
        boolean found = false;
        
        searchLoop: // برچسب (هر نام معتبری می‌تواند باشد)
        for (int row = 0; row < data.length; row++) {
            for (int col = 0; col < data[row].length; col++) {
                System.out.println("بررسی: data[" + row + "][" + col + "] = " + data[row][col]);
                if (data[row][col] == searchFor) {
                    found = true;
                    System.out.println("✅ مقدار " + searchFor + " پیدا شد!");
                    break searchLoop; // خروج از حلقه‌ای که برچسب searchLoop دارد
                }
            }
        }
        
        if (!found) {
            System.out.println("❌ مقدار پیدا نشد.");
        }
        System.out.println("ادامه برنامه بعد از حلقه‌ها...");
    }
}
/* خروجی:
بررسی: data[0][0] = 10
بررسی: data[0][1] = 20
بررسی: data[0][2] = 30
بررسی: data[1][0] = 40
بررسی: data[1][1] = 50
✅ مقدار 50 پیدا شد!
ادامه برنامه بعد از حلقه‌ها...
*/

تکنیک پیشرفته break با برچسب (Labeled Break)



مقایسه break معمولی با labeled break


// break معمولی - فقط از حلقه داخلی خارج می‌شود
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) break; // فقط حلقه j متوقف می‌شود
        System.out.print("(" + i + "," + j + ") ");
    }
}
// خروجی: (0,0) (0,1) (0,2) (1,0) (2,0) (2,1) (2,2)

// labeled break - از حلقه بیرونی هم خارج می‌شود
outer:
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) break outer;
        System.out.print("(" + i + "," + j + ") ");
    }
}
// خروجی: (0,0) (0,1) (0,2) (1,0)

اشتباهات رایج با break در جاوا

اشتباه 1: استفاده از break خارج از حلقه یا switch


// این کد کامپایل نمی‌شود!
if (x > 10) {
    break; // خطا: break خارج از حلقه یا switch است
}

اشتباه 2: فراموش کردن break در switch (fall-through)

int value = 2;
switch (value) {
    case 1:
        System.out.println("یک");
        // break فراموش شده!
    case 2:
        System.out.println("دو");
        break;
}
// خروجی: دو (خوب)
// اگر value=1 بود، خروجی "یک دو" می‌شد! (بد به دلیل fall-through)

اشتباه 3: break در حلقه while بدون تغییر شرط


int count = 0;
while (count < 10) {
    if (condition()) {
        break; // این خوب است
    }
    // ولی اگر break همیشه اجرا شود، بقیه کد هرگز اجرا نمی‌شود
    count++; // ممکن است به این خط هرگز نرسد
}


اشتباهات رایج با break در جاوا


سوالات متداول درباره break در جاوا

1. آیا break فقط در حلقه‌ها کار می‌کند؟

خیر. break در دو جا کار می‌کند: حلقه‌ها (for, while, do-while) و switch. در جای دیگر استفاده از آن خطای کامپایلر می‌دهد.

2. فرق break و continue چیست؟

break: کلاً از حلقه خارج می‌شود.

continue: فقط تکرار جاری را متوقف می‌کند و به تکرار بعدی می‌رود.

for (int i = 1; i <= 5; i++) {
    if (i == 3) break;
    System.out.print(i + " "); // خروجی: 1 2
}
for (int i = 1; i <= 5; i++) {
    if (i == 3) continue;
    System.out.print(i + " "); // خروجی: 1 2 4 5
}

3. آیا می‌توان از break در if استفاده کرد؟

فقط اگر آن if داخل یک حلقه یا switch باشد. break به تنهایی نمی‌تواند در if مستقل استفاده شود.
// این کار درست است
while (true) {
    if (someCondition) {
        break; // چون داخل حلقه است
    }
}

4. آیا break در جاوا عملکردی شبیه goto دارد؟

در گذشته در زبان C/C++ دستور goto وجود دارد. جاوا از goto پشتیبانی نمی‌کند ولی labeled break عملکرد مشابهی برای خروج از بلوک‌های تو در تو ارائه می‌دهد.

5. تفاوت break و return در متدها؟

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

مثال نهایی و پروژه  سیستم جستجوی کاربران

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class UserSearchSystem {
    static class User {
        String username;
        String email;
        
        User(String username, String email) {
            this.username = username;
            this.email = email;
        }
    }
    
    public static void main(String[] args) {
        List<User> users = new ArrayList<>();
        users.add(new User("alireza", "alireza@example.com"));
        users.add(new User("sara", "sara@example.com"));
        users.add(new User("mohammad", "mohammad@example.com"));
        users.add(new User("zahra", "zahra@example.com"));
        
        Scanner scanner = new Scanner(System.in);
        System.out.print("نام کاربری برای جستجو: ");
        String searchUsername = scanner.nextLine();
        
        boolean found = false;
        
        // جستجو با break - به محض پیدا کردن متوقف می‌شود
        for (User user : users) {
            System.out.println("بررسی: " + user.username);
            if (user.username.equalsIgnoreCase(searchUsername)) {
                System.out.println("✅ کاربر پیدا شد!");
                System.out.println("ایمیل: " + user.email);
                found = true;
                break; // دیگر نیازی به ادامه جستجو نیست
            }
        }
        
        if (!found) {
            System.out.println("❌ کاربر با نام '" + searchUsername + "' یافت نشد.");
        }
        
        scanner.close();
    }
}

جمع‌بندی نهایی

دستور break در جاوا یک ابزار قدرتمند و ضروری برای کنترل جریان اجرا است. نکات کلیدی که باید به خاطر بسپارید:


ویژگی توضیح
کاربرد اصلی خروج زودهنگام از حلقه‌ها و بلوک‌های switch
با حلقه for   توقف حلقه قبل از اتمام تعداد تکرارها
با حلقه while/do-while جلوگیری از حلقه بی‌نهایت و خروج بر اساس شرط
با برچسب (label) خروج از چندین حلقه تو در تو به طور همزمان
در مقابل break  continue   کامل خروج می‌کند، continue فقط یک دور را نادیده می‌گیرد
محدودیت  فقط در حلقه‌ها و switch قابل استفاده است

    
    
تمرین پیشنهادی: برنامه‌ای بنویسید که اعدادی را از کاربر دریافت کند تا زمانی که عدد 0 وارد شود، سپس مجموع اعداد وارد شده (به جز 0) را چاپ کند.
از حلقه while(true) و break استفاده کنید.


// راه حل تمرین
Scanner sc = new Scanner(System.in);
int sum = 0;
while (true) {
    System.out.print("عدد وارد کنید (0 برای خروج): ");
    int num = sc.nextInt();
    if (num == 0) {
        break;
    }
    sum += num;
}
System.out.println("مجموع اعداد: " + sum);
sc.close();

با تمرین و استفاده مکرر از break در پروژه‌های واقعی، به تسلط کامل بر آن دست خواهید یافت.
این دستور یکی از ارکان اصلی برنامه‌نویسی ساختاریافته در جاوا است.

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “آموزش دستور break در جاوا” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو