CodeGym /Các khóa học /JAVA 25 SELF /Vòng lặp while: làm quen và những lưu ý khi làm việc

Vòng lặp while: làm quen và những lưu ý khi làm việc

JAVA 25 SELF
Mức độ , Bài học
Có sẵn

1. Giới thiệu

Trong lập trình, bạn thường phải thực hiện đi thực hiện lại cùng một thao tác nhiều lần. Ví dụ:

  • Duyệt qua tất cả phần tử của một danh sách.
  • Đọc từ bàn phím các giá trị cho đến khi người dùng nhập đúng giá trị cần thiết.
  • Tính tổng tất cả các số từ 1 đến 100.
  • Yêu cầu người dùng nhập mật khẩu cho đến khi đúng.

Nếu cố gắng thực hiện tất cả những việc này mà không dùng vòng lặp, mã sẽ dài, nhàm chán và khó mở rộng. Hãy tưởng tượng bạn đang viết một chương trình máy tính bỏ túi và quyết định cộng các số từ 1 đến 10 bằng tay:

int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... và như vậy 10 lần. Ừm.
Lặp thủ công không dùng vòng lặp — thật bất tiện!

Bạn sẽ chán trước khi hoàn thành! Giải pháp — vòng lặp. Chúng cho phép mô tả việc lặp lại hành động một cách ngắn gọn và dễ hiểu. Hôm nay chúng ta sẽ làm quen với vòng lặp cơ bản nhất nhưng cực kỳ hữu ích — while.

2. Làm quen với vòng lặp while

Cú pháp và sơ đồ cơ bản

Vòng lặp while là “con vẹt” trong thế giới lập trình: nó lặp lại cùng một đoạn mã cho đến khi một điều kiện nào đó còn đúng. Ngay khi điều kiện không còn đúng, con vẹt im lặng (vòng lặp kết thúc).

Cú pháp:

while (điều kiện)
{
    // Thân vòng lặp
}
Cú pháp vòng lặp while với khối lệnh

Sơ đồ

Dưới đây là một lưu đồ đơn giản để hiểu cách vòng lặp while hoạt động:

uml-while

3. Ví dụ: vòng lặp while trong thực tế

Bộ đếm cổ điển

Hãy viết một chương trình đơn giản đếm từ 1 đến 5 và in ra các số:

int i = 1;
while (i <= 5)
{
    System.out.println("Bước số " + i);
    i++; // Đừng quên tăng bộ đếm!
}
// Sẽ in ra:
// Bước số 1
// Bước số 2
// Bước số 3
// Bước số 4
// Bước số 5

Lưu ý: nếu quên tăng biến i, vòng lặp sẽ không bao giờ kết thúc (con vẹt của chúng ta sẽ bất tử và lặp mãi mãi). Điều này gọi là vòng lặp vô hạn — một điều đáng sợ.

Nhập từ bàn phím cho đến khi đạt giá trị mong muốn

Không hiếm khi vòng lặp được dùng để “ép” người dùng tới câu trả lời đúng:

String password = "";
while (!password.equals("qwerty"))
{
    System.out.print("Nhập mật khẩu: ");
    password = console.nextLine();
}
System.out.println("Chào mừng!");

Ở đây chương trình yêu cầu nhập mật khẩu cho đến khi bạn gõ đúng "qwerty". Đừng quên: nếu xóa dòng password = console.nextLine();, vòng lặp sẽ lại trở thành vô hạn (sẽ hỏi mật khẩu nhưng không đọc đầu vào — treo mãi như robot hỏng).

4. Các loại và kịch bản sử dụng vòng lặp while

Vòng lặp while thông thường

Vòng lặp này, như đã minh họa ở trên, kiểm tra điều kiện trước lần lặp đầu tiên. Nếu điều kiện sai ngay — thân vòng lặp sẽ không chạy lần nào.

Ví dụ: điều kiện sai ngay từ đầu

int i = 10;
while (i < 5)
{
    System.out.println(i); // Sẽ không bao giờ chạy!
}

Điều này hoàn toàn hợp lý. Đúng như những gì viết ở đây.

Vòng lặp while lồng nhau

Đôi khi cần đặt vòng lặp trong vòng lặp. Ví dụ, duyệt tất cả các dòng và trong mỗi dòng kiểm tra mọi ký tự. Ở giai đoạn này thì hơi mạo hiểm, nhưng đây là ví dụ đơn giản:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

Chúng ta sẽ tìm hiểu kỹ hơn về vòng lặp lồng nhau sau vài bài giảng nữa, giờ chỉ muốn dọa bạn chút thôi :)

Vòng lặp vô hạn

Đôi khi vòng lặp kết thúc, nhưng đôi khi — sống mãi.

while (true)
{
    System.out.println("Tôi bất diệt!");
}

Ít khi dùng, thường cho các tiến trình nền (ví dụ, chạy máy chủ), nhưng vẫn áp dụng trong thực tế.

5. Đừng viết dở hơi: các lỗi thường gặp với while

Trong lập trình, vòng lặp giống như điện: rất tuyệt, nhưng cần biết các quy tắc an toàn.

Vấn đề 1: vòng lặp vô hạn do bất cẩn

Người mới rất hay quên cập nhật biến mà điều kiện phụ thuộc vào nó. Kết quả là vòng lặp chạy “vô hạn”, và phải dừng chương trình cưỡng bức (ví dụ, bằng tổ hợp Ctrl + C).

int i = 1;
while (i <= 5)
{
    System.out.println(i);
    // i++;  // ÔI! Quên tăng i rồi
}

Vấn đề 2: đặt điều kiện sai

Đôi khi lập trình viên tự đào hố: điều kiện lại không bao giờ đúng. Kết quả là vòng lặp không chạy chút nào.

int i = 10;
while (i < 5)
{
    System.out.println(i); // Đoạn mã này sẽ không bao giờ chạy.
    i++;
}

Vấn đề 3: lỗi về kiểu dữ liệu

Trong điều kiện của vòng lặp luôn phải là một biểu thức boolean — tức kết quả phải là true hoặc false.

int number = 5;
while (number) // Lỗi! Cần boolean, không phải int.
{
    number--;
}
1
Nhiệm vụ
JAVA 25 SELF, mức độ, bài học
Đã khóa
Đếm ngược trước khi phóng 🚀
Đếm ngược trước khi phóng 🚀
1
Nhiệm vụ
JAVA 25 SELF, mức độ, bài học
Đã khóa
Mở khóa điện thoại thông minh 📱
Mở khóa điện thoại thông minh 📱
1
Nhiệm vụ
JAVA 25 SELF, mức độ, bài học
Đã khóa
Hiển thị số ghế trong rạp chiếu phim 🎞️
Hiển thị số ghế trong rạp chiếu phim 🎞️
1
Nhiệm vụ
JAVA 25 SELF, mức độ, bài học
Đã khóa
Theo dõi chi tiêu cho cà phê ☕
Theo dõi chi tiêu cho cà phê ☕
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION