Vòng Lặp for (For Loop)
Vòng lặp for trong Java cung cấp cách gọn nhẹ để lặp qua một dãy giá trị cho đến khi điều kiện cụ thể được thỏa mãn. Có 4 loại vòng lặp for chính: Vòng lặp for đơn giản (Simple for Loop), Vòng lặp for cải tiến (Enhanced for Loop), Vòng lặp for có nhãn (Labeled for Loop), Vòng lặp for lồng nhau (Nested for Loop).
Ⅰ. Vòng lặp for đơn giản (Simple for Loop)
Đây là loại vòng lặp for cơ bản nhất, được sử dụng để lặp qua một dãy giá trị hoặc thực hiện một công việc nhiều lần với số lần xác định trước.
Cấu trúc vòng lặp for đơn giản
Cấu trúc
for (khởi_tạo; điều_kiện_kết_thúc; bước_tăng/giảm) {
// các câu lệnh thực thi
}
Giải thích các thành phần:
↳ khởi_tạo: Biểu thức khởi tạo biến đếm trước khi bắt đầu vòng lặp. Chỉ thực thi một lần.
↳ điều_kiện: Biểu thức điều kiện để tiếp tục vòng lặp. Khi sai, vòng lặp kết thúc.
↳ cập_nhật: Biểu thức được thực hiện sau mỗi lần lặp để thay đổi giá trị biến đếm.

Ví dụ: Example.java
public class Example {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
}
}
Kết quả của chương trình là:
i = 1
i = 2
i = 3
i = 4
Lưu ý:
↳ Biến điều khiển vòng lặp thường được đặt tên là i, j, k.
↳ Khai báo biến điều khiển trong khởi tạo giúp giới hạn phạm vi của biến và giảm lỗi.
Ⅱ. Vòng lặp for cải tiến (Enhanced for Loop)
Còn được gọi là vòng lặp for-each, được sử dụng để lặp qua các phần tử trong một Collection hoặc mảng một cách dễ dàng và ngắn gọn. Bởi vì bạn không cần phải tăng hay giảm giá trị của biến rồi check điều kiện, bạn chỉ cần sử dụng ký hiệu hai chấm ":".
Cấu trúc vòng lặp for cải tiến
Cấu trúc
for (kiểu_dữ_liệu biến : Collection/mảng) {
// các câu lệnh thực thi
}
Giải thích các thành phần:
↳ kiểu_dữ_liệu biến: Kiểu dữ liệu của biến để lưu trữ giá trị lặp
↳ biến: Biến để lưu trữ từng phần tử trong mảng/danh sách.
↳ collection/mảng: collection hoặc mảng cần lặp qua.
Ví dụ: Example.java
public class Example {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.println("Number: " + num);
}
}
}
Kết quả của chương trình là:
Number: 2
Number: 3
Number: 4
Number: 5
Ⅲ. Vòng lặp for gán nhãn (Labeled for Loop)
Cho phép bạn đặt nhãn cho vòng lặp for và sử dụng các lệnh break hoặc continue để thoát khỏi hoặc bỏ qua một phần của vòng lặp được gán nhãn.
Cấu trúc vòng lặp for gán nhãn
Cho phép bạn đặt nhãn cho vòng lặp for và sử dụng các lệnh break hoặc continue để thoát khỏi hoặc bỏ qua một phần của vòng lặp được gán nhãn.
Cấu trúc
label: for (khởi_tạo; điều_kiện_kết_thúc; bước_tăng/giảm) {
// các câu lệnh thực thi
break label; // hoặc continue label;
}
Giải thích các thành phần:
↳ Nhãn (label): Nhãn để đánh dấu vòng lặp.
Ví dụ: Example.java
public class Example {
public static void main(String[] args) {
outerLoop: // nhãn cho vòng lặp ngoài
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
break outerLoop; // thoát khỏi vòng lặp ngoài
}
System.out.println("i = " + i + ", j = " + j);
}
}
}
}
Kết quả của chương trình là:
i = 0, j = 1
i = 0, j = 2
i = 1, j = 0
Ⅳ. Vòng lặp lồng nhau (Nested Loop)
Vòng lặp lồng nhau là một cấu trúc vòng lặp trong đó một vòng lặp nằm bên trong một vòng lặp khác. Vòng lặp bên trong sẽ thực hiện toàn bộ số lần lặp của nó cho mỗi lần lặp của vòng lặp bên ngoài. Đây là cách hoạt động của vòng lặp lồng nhau:
↳ 1. Vòng lặp ngoài bắt đầu và thực hiện một lần lặp.
↳ 2. Vòng lặp trong thực hiện toàn bộ số lần lặp của nó.
↳ 3. Sau khi vòng lặp trong kết thúc, vòng lặp ngoài tiếp tục sang lần lặp tiếp theo.
↳ 4. Quá trình này tiếp tục cho đến khi vòng lặp ngoài hoàn thành toàn bộ số lần lặp của nó.
Cấu trúc vòng lặp for lồng nhau
Cấu trúc
for (vòng_lặp_ngoài) {
// Khối lệnh vòng ngoài
for (vòng_lặp_trong) {
// Khối lệnh vòng trong
}
}
Giải thích các thành phần:
↳ vòng_lặp_ngoài: Vòng lặp bên ngoài, thực thi nhiều lần.
↳ vòng_lặp_trong: Vòng lặp bên trong, thực thi nhiều lần cho mỗi lần lặp của vòng lặp ngoài.
Ví dụ: Example.java
public class Example {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
System.out.println("Vòng lặp ngoài lặp lần: " + i);
for (int j = 1; j <= 3; j++) {
System.out.println("\tVòng lặp trong lặp lần: " + j);
}
}
}
}
Kết quả của chương trình là:
Vòng lặp trong lặp lần: 1
Vòng lặp trong lặp lần: 2
Vòng lặp trong lặp lần: 3
Vòng lặp trong lặp lần: 1
Vòng lặp trong lặp lần: 2
Vòng lặp trong lặp lần: 3
Vòng lặp trong lặp lần: 1
Vòng lặp trong lặp lần: 2
Vòng lặp trong lặp lần: 3
Vòng lặp lồng nhau rất hữu ích trong nhiều tình huống như:
↳ Duyệt qua các ma trận hoặc bảng 2D:
Ví dụ: Example.java
public class Example {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
Kết quả của chương trình là:
4 5 6
7 8 9
↳ Tạo các hình mẫu trong lập trình ví dụ in ra một hình tam giác sao:
Ví dụ: Example.java
public class Example {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
Kết quả của chương trình là:
**
***
****
*****