Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các vòng lặp lồng nhau trong Java với sự trợ giúp của các ví dụ.
Nếu một vòng lặp tồn tại bên trong phần thân của một vòng lặp khác, nó được gọi là vòng lặp lồng nhau. Đây là một ví dụ về for
vòng lặp lồng nhau .
// outer loop for (int i = 1; i <= 5; ++i) ( // codes // inner loop for(int j = 1; j <=2; ++j) ( // codes )… )
Ở đây, chúng tôi đang sử dụng một for
vòng lặp bên trong một for
vòng lặp khác .
Chúng ta có thể sử dụng vòng lặp lồng nhau để lặp lại từng ngày trong tuần trong 3 tuần.
Trong trường hợp này, chúng ta có thể tạo một vòng lặp để lặp lại ba lần (3 tuần). Và, bên trong vòng lặp, chúng ta có thể tạo một vòng lặp khác để lặp lại 7 lần (7 ngày).
Ví dụ 1: Java lồng nhau cho vòng lặp
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop prints weeks for (int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop prints days for (int j = 1; j <= days; ++j) ( System.out.println(" Day: " + j); ) ) ) )
Đầu ra
Tuần: 1 Ngày: 1 Ngày: 2 Ngày: 3…. Tuần: 2 Ngày: 1 Ngày: 2 Ngày: 3….….
Trong ví dụ trên, vòng lặp bên ngoài lặp lại 3 lần và in 3 tuần. Và, vòng lặp bên trong lặp lại 7 lần và in ra 7 ngày.
Chúng ta cũng có thể tạo các vòng lặp lồng nhau với while và do… while theo cách tương tự.
Lưu ý : Có thể sử dụng một loại vòng lặp bên trong thân của một vòng lặp khác. Ví dụ, chúng ta có thể đặt một for
vòng lặp bên trong while
vòng lặp.
Ví dụ 2: Vòng lặp for Java bên trong vòng lặp while
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; int i = 1; // outer loop while (i <= weeks) ( System.out.println("Week: " + i); // inner loop for (int j = 1; j <= days; ++j) ( System.out.println(" Days: " + j); ) ++i; ) ) )
Đầu ra :
Tuần: 1 Ngày: 1 Ngày: 2 Ngày: 3…. Tuần: 2 Ngày: 1 Ngày: 2 Ngày: 3….….
Ở đây bạn có thể thấy rằng kết quả của cả Ví dụ 1 và Ví dụ 2 là như nhau.
Ví dụ 3: Các vòng lặp lồng nhau trong Java để tạo một mẫu
Chúng ta có thể sử dụng vòng lặp lồng nhau trong Java để tạo các mẫu như kim tự tháp đầy đủ, một nửa kim tự tháp, kim tự tháp ngược, v.v.
Đây là một chương trình để tạo một mô hình nửa kim tự tháp bằng cách sử dụng các vòng lặp lồng nhau.
class Main ( public static void main(String() args) ( int rows = 5; // outer loop for (int i = 1; i <= rows; ++i) ( // inner loop to print the numbers for (int j = 1; j <= i; ++j) ( System.out.print(j + " "); ) System.out.println(""); ) ) )
Đầu ra
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
Để tìm hiểu thêm, hãy truy cập chương trình Java để in kim tự tháp và các mẫu.
ngắt và tiếp tục Bên trong Vòng lặp lồng nhau
Khi chúng ta sử dụng một break
câu lệnh bên trong vòng lặp bên trong, nó kết thúc vòng lặp bên trong nhưng không kết thúc vòng lặp bên ngoài. Ví dụ,
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // break inside the inner loop if(i == 2) ( break; ) System.out.println(" Days: " + j); ) ) ) )
Đầu ra
Tuần: 1 Ngày: 1 Ngày: 2…. Tuần: 2 Tuần: 3 Ngày: 1 Ngày: 2….….
Trong ví dụ trên, chúng ta đã sử dụng câu lệnh break bên trong for
vòng lặp bên trong . Ở đây, chương trình bỏ qua vòng lặp khi tôi là 2 .
Do đó, các ngày trong tuần thứ 2 không được in. Tuy nhiên, vòng lặp bên ngoài in tuần không bị ảnh hưởng.
Tương tự, khi chúng ta sử dụng một continue
câu lệnh bên trong vòng lặp bên trong, nó chỉ bỏ qua lần lặp hiện tại của vòng bên trong. Vòng ngoài không bị ảnh hưởng. Ví dụ,
class Main ( public static void main(String() args) ( int weeks = 3; int days = 7; // outer loop for(int i = 1; i <= weeks; ++i) ( System.out.println("Week: " + i); // inner loop for(int j = 1; j <= days; ++j) ( // continue inside the inner loop if(j % 2 != 0) ( continue; ) System.out.println(" Days: " + j); ) ) ) )
Đầu ra
Tuần: 1 Ngày: 2 Ngày: 4 Ngày: 6 Tuần: 2 Ngày: 2 Ngày: 4 Ngày: 6 Tuần: 3 Ngày: 2 Ngày: 4 Ngày: 6
Trong ví dụ trên, chúng ta đã sử dụng câu lệnh continue bên trong vòng lặp for bên trong. Lưu ý mã,
if(j % 2 != 0) ( continue; )
Ở đây, continue
câu lệnh được thực hiện khi giá trị của j là lẻ. Do đó, chương trình chỉ in những ngày chẵn.
Chúng ta có thể thấy continue
câu lệnh chỉ ảnh hưởng đến vòng lặp bên trong. Vòng lặp bên ngoài đang hoạt động mà không có vấn đề gì.