Trong lập trình, việc sử dụng các vòng lặp lồng nhau là rất phổ biến để thực hiện các tác vụ phức tạp, như duyệt qua các mảng hai chiều hoặc kiểm tra các điều kiện trong nhiều tập dữ liệu. Tuy nhiên, đôi khi bạn có thể muốn thoát khỏi tất cả các vòng lặp khi một điều kiện nhất định được đáp ứng. Bài viết này sẽ giới thiệu các cách để thoát khỏi các vòng lặp lồng nhau trong Java.

1. Sử dụng break

1.1. Định nghĩa

Toán tử break cho phép bạn thoát khỏi một vòng lặp cụ thể. Tuy nhiên, nó chỉ có tác dụng trên vòng lặp mà nó được gọi.

1.2. Ví dụ

public class BreakExample {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i == 3 && j == 3) {
                    break; // Chỉ thoát khỏi vòng lặp thứ hai
                }
                System.out.println("i: " + i + ", j: " + j);
            }
        }
    }
}

Kết quả:

i: 0, j: 0
i: 0, j: 1
...
i: 3, j: 0
i: 3, j: 1
i: 3, j: 2

2. Sử dụng break với nhãn (label)

2.1. Định nghĩa

Bạn có thể gán một nhãn cho vòng lặp bên ngoài và sử dụng break với nhãn để thoát khỏi tất cả các vòng lặp lồng nhau.

2.2. Ví dụ

public class BreakWithLabelExample {
    public static void main(String[] args) {
        outer: // Nhãn cho vòng lặp bên ngoài
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i == 3 && j == 3) {
                    break outer; // Thoát khỏi cả hai vòng lặp
                }
                System.out.println("i: " + i + ", j: " + j);
            }
        }
    }
}

Kết quả:

i: 0, j: 0
i: 0, j: 1
...
i: 2, j: 4

3. Sử dụng cờ (flag)

3.1. Định nghĩa

Một cách khác để kiểm soát việc thoát khỏi các vòng lặp là sử dụng một biến cờ (flag) để xác định xem có nên thoát hay không.

3.2. Ví dụ

public class FlagExample {
    public static void main(String[] args) {
        boolean exitLoop = false; // Cờ thoát
        for (int i = 0; i < 5 && !exitLoop; i++) {
            for (int j = 0; j < 5; j++) {
                if (i == 3 && j == 3) {
                    exitLoop = true; // Đặt cờ
                    break; // Thoát vòng lặp bên trong
                }
                System.out.println("i: " + i + ", j: " + j);
            }
        }
    }
}

Kết quả:

i: 0, j: 0
i: 0, j: 1
...
i: 2, j: 4

4. Sử dụng phương thức trả về

4.1. Định nghĩa

Nếu bạn đang làm việc trong một phương thức, bạn có thể trả về từ phương thức đó để thoát khỏi tất cả các vòng lặp.

4.2. Ví dụ

public class ReturnExample {
    public static void main(String[] args) {
        loopThrough(); // Gọi phương thức
    }

    public static void loopThrough() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (i == 3 && j == 3) {
                    return; // Trở về khỏi phương thức
                }
                System.out.println("i: " + i + ", j: " + j);
            }
        }
    }
}

Kết quả:

i: 0, j: 0
i: 0, j: 1
...
i: 2, j: 4

Kết luận

Có nhiều cách để thoát khỏi các vòng lặp lồng nhau trong Java, bao gồm việc sử dụng break, break với nhãn, cờ (flag) và phương thức trả về. Tùy thuộc vào nhu cầu cụ thể của bạn, mỗi phương pháp có thể thích hợp trong các tình huống khác nhau. Việc hiểu rõ cách hoạt động của từng phương pháp sẽ giúp bạn viết mã hiệu quả và dễ bảo trì hơn.