CodeGym /Blog Java /Ngẫu nhiên /Các vòng lặp lồng nhau trong Java

Các vòng lặp lồng nhau trong Java

Xuất bản trong nhóm
Java, giống như hầu hết các ngôn ngữ lập trình khác, hỗ trợ các vòng lặp lồng nhau. Điều này có nghĩa chỉ là một vòng lặp trong một vòng lặp. Trong bài viết này, chúng ta sẽ tìm hiểu về cách làm việc với các vòng lặp lồng nhau trong Java.

Các vòng lặp lồng nhau trong Java

Một vòng lặp được gọi là lồng nhau nếu nó được đặt bên trong một vòng lặp khác. Ở lượt đầu tiên, vòng lặp bên ngoài gọi vòng lặp bên trong, vòng lặp này chạy cho đến khi hoàn thành, sau đó quyền điều khiển được chuyển đến phần thân của vòng lặp bên ngoài. Ở lần thứ hai, vòng lặp bên ngoài gọi vòng lặp bên trong một lần nữa. Và cứ như vậy cho đến khi vòng lặp bên ngoài kết thúc. Có bốn loại vòng lặp trong Java:
  • cho vòng lặp

  • vòng lặp while

  • làm... vòng lặp while

  • cho mỗi vòng lặp

Tất cả chúng đều hỗ trợ các vòng lặp lồng nhau. Các cấu trúc vòng lặp lồng nhau được sử dụng khi phải đáp ứng hai điều kiện, điều kiện này phụ thuộc vào điều kiện kia. Ví dụ: nếu bạn cần hiển thị ma trận hai chiều, bán kim tự tháp hoặc bảng cửu chương.

Các vòng lặp lồng nhau trong Java hoạt động như thế nào

Có lẽ vòng lặp được sử dụng nhiều nhất trong Java là for , phần lớn là do nó khá linh hoạt và mã của nó khá dễ đọc. Đây là cú pháp chung cho vòng lặp for lồng nhau:

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

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
Làm thế nào để anh ấy làm việc? Vòng lặp bên ngoài bắt đầu. Sau đó, vòng lặp for lồng nhau bắt đầu công việc và đi qua chỉ mục của nó cho đến khi đáp ứng điều kiện, và lại chuyển công việc sang vòng lặp bên ngoài, và điều này xảy ra cho đến khi đáp ứng điều kiện của vòng lặp bên ngoài. Nghe có vẻ hơi rắc rối phải không? Chà, sẽ dễ hiểu hơn nhiều với một ví dụ cụ thể, vì vậy hãy chuyển sang phần đó.

Ví dụ về mã vòng lặp lồng nhau

Đây là một ví dụ kinh điển. Hãy in ra một nửa kim tự tháp bằng cách sử dụng hai vòng lặp for . Một trong số chúng được lồng vào nhau.

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();
       }
      
   }
}
Đầu ra là:
* ** *** **** ***** ****** ******* ******** ********* **********

Ví dụ mã vòng lặp while lồng nhau


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++;

       }
   }
}
Đầu ra giống như trong ví dụ trước:
* ** *** **** ***** ****** ******* ******** ********* **********
Vòng lặp do...while tương tự như vòng lặp while . Sự khác biệt chính là phần thân của vòng lặp do...while được thực thi một lần trước khi kiểm tra biểu thức.

Ví dụ mã vòng lặp foreach lồng nhau

vòng lặp for-each có thể được lồng vào nhau như vòng lặp for thông thường . Dưới đây là ví dụ về vòng lặp for-each lồng nhau lặp lại mảng 2 chiều.

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("");
           }
       }
}
Đầu ra là:
5 4 3 2 1 7 8 9 10 11

Ví dụ về vòng lặp for và while hỗn hợp

Đôi khi chúng ta có thể lồng các loại vòng lặp khác nhau vào trong nhau. Ví dụ: for inside while hoặc for inside for-each . Tuy nhiên, đó không phải là cách lập trình tốt nhất. Các cấu trúc như vậy làm giảm đáng kể khả năng đọc mã. Vì vậy, các lập trình viên chuyên nghiệp cố gắng không trộn lẫn cái này với cái kia. Vâng, họ làm, nhưng chỉ khi nó thực sự cần thiết. Và một quy tắc nhỏ nữa: nếu bạn đang chọn giữa whilefor , hãy sử dụng for nếu có thể. Tuy nhiên, ở đây chúng ta sẽ có một ví dụ về việc sử dụng vòng lặp for bên trong while . Hãy xây dựng lại bán kim tự tháp của chúng ta.

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++;

       }
   }
}
Đầu ra không có gì ngạc nhiên:
* ** *** **** ***** ****** ******* ******** ********* **********
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION