1. Giới thiệu
Hãy tưởng tượng bạn có nhiệm vụ: in ra màn hình «Xin chào!» mười lần. Dĩ nhiên, bạn có thể viết mười dòng với System.out.println("Xin chào!"); — nhưng giờ bạn đã biết vòng lặp while, nên việc này không thành vấn đề.
Nhưng còn một vòng lặp nữa — for, vòng lặp này lặp lại hành động cần thiết số lần mong muốn. Và nó còn tự đếm giúp bạn!
Đây là một ví dụ điển hình:
for (int i = 0; i < 10; i++)
{
System.out.println("Xin chào!");
}
Đoạn mã này làm gì? Nó in ra từ «Xin chào!» đúng 10 lần. Không cần copy-paste và không đau cổ tay.
2. Cú pháp của vòng lặp for
Vòng lặp for gồm ba phần chính, được đặt trong ngoặc tròn sau từ khóa for:
for (khởi tạo; điều kiện; thay đổi)
{
// Thân vòng lặp
}
for
Hãy phân tích từng thành phần chi tiết:
- Khởi tạo — thường là tạo biến đếm để theo dõi số lần lặp (int i = 0).
- Điều kiện — kiểm tra trước mỗi lần lặp. Nếu đúng — thân vòng lặp được thực thi. Nếu sai — vòng lặp kết thúc. Ví dụ, i < 10.
- Thay đổi — toán tử được thực thi sau mỗi lần lặp. Thường tăng hoặc giảm giá trị bộ đếm (i++).
Có thể minh họa bằng sơ đồ:
3. So sánh for và while
Có lẽ bạn sẽ thấy dễ hiểu hơn nếu tôi nói rằng for chỉ là một cách viết khác của vòng lặp while.
Ta có vòng lặp while:
int i = 0; // Khởi tạo biến dùng cho vòng lặp
while(i<10) // Kiểm tra điều kiện tiếp tục vòng lặp
{
System.out.println(i); // Hành động có ích (thân vòng lặp)
i++; // Tăng bộ đếm
}
Ta có thể viết lại nó dưới dạng vòng lặp for, bằng cách đưa các thao tác điều khiển logic vòng lặp vào trong phần đầu:
for (int i = 1; i <= 10; i++) // Khởi tạo; Kiểm tra điều kiện; Tăng bộ đếm
{
System.out.println(i); // Hành động có ích (thân vòng lặp)
}
Các bước hoạt động của cả hai vòng lặp:
- Khởi tạo int i = 0; được thực hiện 1 lần trước vòng lặp.
- Sau đó kiểm tra điều kiện i <= 10
- Tiếp theo là hành động của vòng lặp System.out.println(i);
- Rồi tăng bộ đếm i++
- Sau đó quay lại bước 2.
4. Ví dụ sử dụng vòng lặp for
Ví dụ đơn giản nhất
Hãy in ra các số từ 1 đến 5:
for (int i = 1; i <= 5; i++)
{
System.out.println(i);
}
Kết quả:
1
2
3
4
5
Lưu ý: nếu bạn viết i < 5, giá trị cuối cùng sẽ là 4.
Đếm ngược
Muốn cảm thấy như một phi hành gia? Hãy làm đếm ngược!
for (int i = 5; i > 0; i--)
{
System.out.println(i);
}
System.out.println("Đi thôi!");
Kết quả:
5
4
3
2
1
Đi thôi!
Bước lặp khác 1
Bạn có thể thay đổi bộ đếm không chỉ 1 mà còn bất kỳ số nào khác:
for (int i = 0; i <= 10; i += 2)
{
System.out.println(i);
}
// Sẽ in: 0 2 4 6 8 10
5. Biến thể của vòng lặp for
Nhiều biến trong vòng lặp
Đôi khi thuận tiện khi theo dõi cùng lúc hai biến. Ví dụ, hãy in các số từ trái sang phải và từ phải sang trái:
for (int left = 1, right = 10; left <= 10; left++, right--)
{
System.out.println(left + " " + right);
}
Kết quả:
1 10
2 9
3 8
...
10 1
Vòng lặp for vô hạn
Nếu tình huống rất đặc biệt (ví dụ, dự án của bạn là “động cơ vĩnh cửu” trong IT), bạn có thể tạo vòng lặp for “vĩnh cửu”:
for (;;) // không có khởi tạo, không điều kiện, không thay đổi
{
System.out.println("Làm việc, làm việc và làm việc nữa!");
}
Chú ý: vòng lặp như vậy chỉ kết thúc nếu trong thân có break, return hoặc throw. Đừng dùng vô cớ, nếu không bạn có thể đánh thức con quỷ cổ xưa — “Tiến trình không phản hồi”.
GO TO FULL VERSION