Vòng lặp do-while trong java với ví dụ cụ thể

Chúng ta đã đi qua được 2 kỹ thuật lặp đó là vòng lặp for while. Trong bài viết này chúng ta sẽ tìm hiểu về vòng lặp do – while.

Vòng lặp do – while gần giống với vòng lặp while, khác ở điểm là vòng lặp while sẽ kiểm tra điều kiện trước rồi mới thực thi code còn do – while thì ngược lại sẽ thực thi code xong rồi mới kiếm tra điều kiện.

Cú pháp của vòng lặp do – while

do {
   // code block 
} while(điều kiện);

Cơ chế hoạt động:

B1: Thực thi code bên trong block do

B2: Kiểm tra điều kiện trong while, nếu kết quả là:

  • true: Quay lại thực thi code bên trong block  do
  • false: thoát khỏi vòng lặp do – while

Sơ đồ

do while trong java (do while in java)

Ví dụ: Xuất ra màn hình từ 1 đến 10

package com.company;

public class Main {

    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println(i);
            i++;
        } while (i <= 10);
    }
}

Output:

1
2
3
4
5
6
7
8
9
10

Vòng lặp vô hạn

Đối với bất kỳ vòng lặp nào chúng ta cũng có thể bắt gặp vòng lặp theo cách có chủ ý hoặc không có chủ ý.

Có chủ ý

Vòng lặp d0 while vô hạn có chủ ý thường được dùng để thực thi các tập lệnh mà không biết trước số lần lặp cho đến khi đạt được kết quả mong muốn. 

public class Main {

    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println(i);
            i++;
        } while (true);
    }
}

Không có chủ ý (code lụi)

package com.company;

public class Main {

    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println(i);
            i--;
        } while (i <= 10);
    }
}

Mệnh đề do while với mệnh đề break

Khi chúng ta thực hiện một tập lệnh mà không biết được số lần thực thi, cho đến khi chúng ta đạt được kết quả mong muốn thì chúng ta thường kết hợp vòng lặp vô hạn với mệnh đề break.

Ví dụ: Bắt ký tự từ bàn phím rồi im ra màn hình Ky tu vua nhap vao + {Ky tu vua moi nhap}. Nhập vào c để dừng chương trình.

package com.company;

import java.util.Scanner;

public class Main {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        do {
            String str = scanner.nextLine();
            // Kiểm tra ký tự ngắt
            if (str.equals("c")) {
                break;
            }
            System.out.println("Ky tu vua nhap vao: " + str);
        } while (true);
    }
}

Output:

shareprogramming
Ky tu vua nhap vao: shareprogramming
hello moi nguoi nhe
Ky tu vua nhap vao: hello moi nguoi nhe
c

Process finished with exit code 0

Vậy là chúng ta đã tìm hiểu xong 3 vòng lặp trong java. Các bạn có thắc mắc là nên dùng vòng lặp nào trong tìm huống nào không?

Um cá nhân mình nghĩ thì ứng với mỗi yêu cầu thì bất kỳ vòng lặp nào cũng đều đáp ứng được. Thế nên các bạn có thể chỉ cần nhớ một vòng lặp là được.

Thế nhưng trong nhiều tình huống thì có thể vòng lặp này có thể code ngắn hơn. Thế nên biết một là mức tối thiểu, tốt hơn thì nên biết cả ba, tuy tình huống mà áp dụng nhé.

Bài tập thực hành

Sử dụng vòng lặp do – while để hoàn thành các bài tập sau:

1, Viết chương trình tính tổng các số nguyên từ 1 đến 10.

2, Viết chương trình tìm một số nguyên a trong mảng arr cho trước. a được nhập vào từ bàn phím. Xuất ra màn hình vị trí của a trong mảng nếu tìm thấy, ngược lại là “khong tim thay”.

3, Cho một mảng số nguyên arr, viết chương trình java xuất ra giá trị đảo ngược mảng, ví dụ arr[] = {1, 2, 3, 4, 5} => output 5, 4, 3, 2, 1.

4, Viết chương trình in dãy số fibonacci của n, với n là số nguyên nhập vào từ bàn phím.

Bài tham khảo

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        /*
            1, Viết chương trình tính tổng các số nguyên từ 1 đến 10.
         */

        int sum = 0;
        int i1 = 1;
        do {
            sum += i1;
            i1++;
        } while (i1 <= 10);

        System.out.println("Tong 1 den 10: " + sum);


        /*
            2, Viết chương trình tìm một số nguyên a trong mảng arr cho trước. a được nhập vào từ bàn phím.
         */

        int arr[] = {1, 2, 4, 6, 7, 8, 9};
        int a = 4, i2 = 0;
        do {

            if (arr[i2] == a) {
                System.out.println("Vi tri: " + i2);
            }
            i2++;
        } while (i2 < arr.length);


        /*
            3, Cho một mảng số nguyên arr, viết chương trình java đảo ngược mảng, ví dụ arr[] = {1, 2, 3, 4, 5} => output {5, 4, 3, 2, 1}.
         */

        int[] arr3 = {1, 2, 3, 4, 5};
        int i3 = arr3.length - 1;
        do {
            System.out.print(arr3[i3] +  " ");
            i3--;
        } while (i3 >= 0);

        /*
            4, Viết chương trình in dãy số fibonacci của n, với n là số nguyên nhập vào từ bàn phím.
         */

        System.out.print("Nhap n: ");
        int fb = scanner.nextInt();
        int f1 = 0, f2 = 1, i4 = 2;

        System.out.print(f1 + " ");
        System.out.print(f2 + " ");
        do {

            int newf = f1 + f2;
            System.out.print(newf + " ");
            f1 = f2;
            f2 = newf;
            i4++;
        } while (i4 <= fb);
    }

}
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x