Phần trước mình đã giới thiệu với mọi người về câu lệnh rẽ nhánh trong Java rồi. Phần này mình sẽ giới thiệu đến mọi người vòng lặp trong Java, cái này cũng được sử dụng rất nhiều trong chương trình.
1. Vòng lặp là gì?
Vòng lặp (tiếng anh là loop) là một thuật ngữ dùng để diễn tả một hành động hay một cụm hành động được lặp đi lặp lại nhiều lần.
VD: Như chúng ta cứ uống nước xong là lại phải đi tiểu và hành động đó cứ xảy ra đến khi chết mới kết thúc :D, hành động này được gọi là vòng lặp.
Trong Java chúng ta có 2 cách chính để tạo ra vòng lặp. Đó chính là sử dụng while, do-while
và for
.
2. Vòng lặp while.
Vòng lặp while
sẽ thực thi khối lệnh bên trong nó khi khối lệnh điều kiện của while vẫn còn đúng (true
).
Cú pháp:
while(dieu_kien) {
// code
}
Trong đó: dieu_kien
là một biểu thức (expression) trả về giá trị true
hoặc false
. Nếu điều kiện là false
thì vòng lặp while
sẽ ngừng thực thi.
VD: Sử dụng vòng lặp while
, in ra số từ 1 đến 10.
int i = 1;
while (i < 11){
System.out.println(i);
i++;
}
Kết quả:
1
2
3
4
5
6
7
8
9
10
Nếu bạn muốn vòng lặp while
chạy không bao giờ ngừng (finite loop) thì chỉ cần set giá trị điều kiện của while
là true
.
VD:
while (true){
// code
}
Bạn cũng có thể lồng các vòng lặp với nhau.
VD:
int i = 1;
while (i <= 10) {
int j = 1;
while (j <= 10 - i) {
System.out.print(j);
j += 1;
}
System.out.println("");
i += 1;
}
Kết quả:
123456789
12345678
1234567
123456
12345
1234
123
12
1
3. Vòng lặp do-while.
Vòng lặp do-while
cũng tương tự như vòng lặp while
. Chỉ khác 1 chút về cách thực thi, vòng lặp do-while
sẽ thực thi code trong do block rồi mới check đến while
. Chính vì điều này mà vòng lặp do-while
sẽ luôn luôn thực thi code ít nhất 1 lần dù cho bạn có sét điều kiện của while
là false
.
VD:
do {
System.out.println("Da duoc thuc thi");
} while (false);
// Output: Da duoc thuc thi
4. Vòng lặp for.
Vòng lặp for
cho phép chúng ta thực thi code với điều kiện thường sẽ là trong một khoảng nào đó.
Cú pháp:
for (initialization; termination; increment) {
// code
}
Trong đó:
initialization
là biểu thức khởi tạo vòng lặp. Biểu thức này chỉ được thực thi 1 lần, khi bắt đầu vòng lặp.termination
là biểu thức kiểm tra điều kiện kết thúc vòng lặp hay tiếp tục lặp.termination
sẽ được thực thi sau mỗi lần lặp .termination
trả vềflase
thì vòng lặp sẽ được kết thúc và ngược lại trả vềtrue
thì vòng lặp sẽ tiếp tục lặp.increment
là biểu thức sẽ được thực thi sau mỗi khi hoàn thành 1 lần lặp.
VD: Mình sẽ in ra số từ 1 đến 10 sử dụng vòng lặp for
.
for (int i = 1; i < 11; i++) {
System.out.println(i);
}
Kết quả:
1
2
3
4
5
6
7
8
9
10
Trong ví dụ trên, mình đã gán giá trị cho i = 1
khi bắt đầu vòng lặp và mình sẽ cho vòng lặp dừng khi giá trị i < 11
(tương ứng với việc giá trị max của i
sẽ là 10). Sau mỗi lần lặp mình sẽ tăng giá trị của i
lên 1 đơn vị.
Nếu như bạn muốn vòng lặp for
lặp vô thời hạn, thì chỉ cần để trống 3 tham số truyền vào for
.
VD: Vòng lặp vô tận với for
.
for ( ; ; ) {
// code
}
Ngoài ra, trong Java bạn còn có thể lặp các giá trị như array
và collection
với for
. Đây là một tính năng giúp chúng ta có thể viết câu lệnh for ngắn gọn và dễ đọc hơn.
Cú pháp:
for (data_type item : list_data) {
// code
}
Trong đó:
data_type
là kiểu giá trị của phần tử tronglist_data
.item
là biến sẽ được gán với giá trị của phần tử tương ứng tronglist_data
.list_data
là mộtarray
hoặccollection
chúng ta cần lặp giá trị.
VD: Mình sẽ khởi tạo một mảng số và lặp từng giá trị bên trong mảng đó với vòng lặp for
.
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int i : nums) {
System.out.println(i);
}
Kết quả:
1
2
3
4
5
6
7
8
9
10
Bạn cũng có thể lồng các vòng lặp for
với nhau.
VD:
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10 - i; j++) {
System.out.print(j);
}
System.out.println("");
}
Kết quả:
12345678
1234567
123456
12345
1234
123
12
1
5. Các cách tác động đến vòng lặp.
Thông thường trong một số trường hợp vòng lặp của chúng ta sẽ có thể không cần thực thi tiếp hoặc là cần nhảy sang lần lặp tiếp theo luôn. Và để làm được điều đó thì trong Java có hỗ trợ chúng ta 2 keyword để tác động đến vòng lặp là:
break
: Giúp chúng ta chấm dứt vòng lặp tại thời điểm nó xuất hiện và các code cùng cấp phía sau nó sẽ không được thực thi nữa.continue
: giúp chúng ta nhảy qua lần lặp hiện tại và chuyển đến lần lặp tiếp theo, các code cùng cấp phía sau nó cũng sẽ không được thực hiện.
Để hiểu hơn về 2 keyword này thì các bạn tham khảo 2 ví dụ dưới đây của mình.
VD:
int i = 1;
while (i < 10) {
System.out.println(i);
if (i == 5) {
break;
}
i++;
}
// ouput:
// 1
// 2
// 3
// 4
// 5
Trong ví dụ trên mình đã break
vòng lặp khi i
bằng 5 nên vòng lặp chỉ thực thi đến lần thứ 5 là kết thúc.
VD:
int i = 0;
while (i < 10) {
i++;
if (i == 5) {
continue;
}
System.out.println(i);
}
// Output
// 1
// 2
// 3
// 4
// 6
// 7
// 8
// 9
// 10
Trong ví dụ trên mình đã sử dụng continue
để nhảy qua lần lặp nếu i
bằng 5. Chính vì thế System.out.println(i)
sẽ không được thực thi khi i
bằng 5
Đăng ký nhận tin.
Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!
0 Comments