Bài viết này mình sẽ chia sẻ với bạn các ví dụ luyện tập sử dụng vòng lặp trong Java, giúp bạn thuần thục và thực sự thoải mái khi sử dụng chúng.
Luyện tập Vòng lặp trong Java
Bạn nên nhớ rằng, Kiến thức cơ bản là một trong những viên gạch quan trọng để xây dựng nên những thứ cao siêu và thâm thuý hơn.
Bất kỳ môn phái hay ngành học nào cũng cần luyện tập những những kiến thức căn thật vững.
Bạn càng thoải mái, càng thành thục những vấn đề cơ bản thì khi đụng đến vấn đề phức tạp sẽ biết cách chia chúng thành vấn đề nhỏ để hiểu từng phần.
Riêng đối với việc học lập trình Java. Nếu bạn không thể học 1 hiểu 10 (như thiên tài) thì hãy học 10 để hiểu 1 thật tốt.
Ok, bây giờ chúng ta bắt đầu nào...
1. Một số vòng lặp cơ bản thường gặp trong Java
Trong Java và hầu như mọi ngôn ngữ lập trình khác, khi nhắc đến vòng lặp thì có ba cái tên tiêu biểu nhất, được sử dụng thường xuyên nhất đó là:
-
vòng lập FOR
-
vòng lập WHILE
-
vòng lập DO WHILE
Để hiểu được 3 vòng lặp này trong Java sử dụng như thế nào không khó, chỉ cần bạn luyện tập đủ nhiều là được.
1.1. Vòng lập FOR
Vòng lặp for được sử dụng khi bạn biết chính xác hoặc cụ thể việc bạn muốn lặp lại bao nhiêu lần một hoặc nhiều đoạn code chứa bên trong.
Cú pháp:
for (<biến khởi tạo>; <biểu thức điều kiện>; <tăng/giảm biến>){
// các lệnh;
}
Trong đó:
-
Biến khởi tạo: là biến đã được khai báo để đánh dấu sự bắt đầu của vòng lặp.
-
Biểu thức điều kiện: là một biểu thức kiểm tra trả về giá trị
Boolean
, vòng lặp được thực thi khi giá trị trả về của biểu thức là True
và ngược lại thoát vòng lặp nếu giá trị trả về là False
.
-
Tăng/giảm biến: được sử dụng để cập nhật giá trị của biến cho lần lặp tiếp theo.
1.2. Vòng lặp WHILE
Vòng lặp while được sử dụng khi bạn không thể xác định được số lần lặp cụ thể của chương trình.
Cú pháp:
while(<điều kiện>) {
// các lệnh;
}
Vòng lặp WHILE bắt đầu với việc kiểm tra điều kiện.
-
Khi điều kiện đúng, tức giá trị trả về là
True
thì các câu lệnh trong thân vòng lặp được thực thi.
Thông thường các câu lệnh trong phần thân sẽ chứa một giá trị cập nhật cho biến đang được xử lý cho lần lặp tiếp theo.
-
Khi điều kiện sai, tức kết quả trả về là
False
, vòng lặp chấm dứt đánh dấu sự kết thúc vòng đời của nó.
1.3. Vòng lặp DO WHILE
Vòng lặp DO WHILE tương tự như vòng lặp WHILE, nhưng kể cả khi điều kiện sai, giá trị trả về là False thì vòng lặp vẫn thực hiện lệnh ít nhất một lần.
Hay chính xác hơn là, DO WHILE kiểm tra điều kiện sau khi thực hiện các câu lệnh.
Cú pháp:
do {
// các lệnh;
} while(<điều kiện>);
Nhìn cú pháp có thể thấy, điều kiện trong DO WHILE trong Java được kiểm tra sau khi thực hiện các câu lệnh và cập nhật giá trị biến.
-
Nếu điều kiện đúng, lần lặp tiếp theo của vòng lặp sẽ bắt đầu.
-
Khi điều kiện sai, vòng lặp sẽ chấm dứt và đánh dấu sự kết thúc vòng đời của nó.
2. Sử dụng vòng lặp trong Java để giải quyết một số thuật toán cơ bản thường gặp
Không nói suông lý thuyết nữa, chúng ta sẽ điểm qua một số ví dụ thường gặp để thấy được cái hay ho của các vòng lặp nào.
Ví dụ vòng lặp trong Java #1
Trường hợp bạn cần in các số tự nhiên từ 1 đến 9 ra màn hình. Chẳng lẽ bạn viết câu lệnh System.out.println(9) tận 9 lần sao.
Ừ thì bạn chăm chỉ, bạn Copy -> Paste 9 lần cũng được. Nhưng nếu không phải là in ra từ 1 - 9 mà là in ra từ 1 - 1000 thì sao?
Bạn có đủ sức Copy -> Paste nữa không?
Trong trường hợp như vậy, người ta sẽ sử dụng vòng lặp, vừa để giảm công sức, vừa để giảm code của chương trình.
Sử dụng vòng lặp FOR:
public class VongLapFor {
public static void main(String[] args) {
// in các số từ 1 đến 1000
for(int i = 1; i <= 1000; i++) {
System.out.println(i);
}
}
}
Sử dụng vòng lặp WHILE:
public class VongLapWhile {
public static void main(String[] args) {
// in các số từ 1 đến 1000
int i = 1;
while(i <= 1000) {
System.out.println(i);
i++;
}
}
}
Sử dụng vòng lặp DO WHILE:
public class VongLapDoWhile {
public static void main(String[] args) {
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 1000);
}
}
Ví dụ vòng lặp trong Java #2
Tính tổng các số tự nhiên từ 1 đến 1000.
Sử dụng vòng lặp FOR:
public class VongLapFor {
public static void main(String[] args) {
// Tổng các số từ 1 đến 1000
int tong = 0;
for(int i = 1; i <= 1000; i++) {
tong = tong + i;
}
System.out.println(tong);
}
}
Sử dụng vòng lặp WHILE:
public class VongLapWhile {
public static void main(String[] args) {
// in các số từ 1 đến 1000
int i = 1;
int tong = 0;
while (i <= 1000) {
tong = tong + i;
i++;
}
System.out.println(tong);
}
}
Sử dụng vòng lặp DO-WHILE:
public class VongLapDoWhile {
public static void main(String[] args) {
// in các số từ 1 đến 1000
int i = 1;
int tong = 0;
do {
tong = tong + i;
i++;
} while (i <= 1000);
System.out.println(tong);
}
}
Bài này nếu không dùng vòng lặp để giải quyết thì bạn có cách nào khác hoặc đơn giản và nhanh hơn để code không?
Gợi ý!
Công thức tính tổng các số từ 1 đến n là: (n + 1)*(n/2)
Ví dụ vòng lặp trong Java #3
Bây giờ chúng ta thử thao tác với mảng bằng vòng lặp xem nào.
Hãy in tất cả giá trị của mảng cho trước theo thứ tự ngược lại.
Sử dụng vòng lặp FOR:
public class VongLapFor {
public static void main(String[] args) {
// Khai báo một mảng
String[] niit = {
"1-Java",
"2-Python",
"3-PHP",
"4-JavaScript",
"5-CSS",
"6-HTML",
"7-Big Data"
};
// In ngược giá trị của mảng cho trước
for (int i = niit.length; i > 0 ; i--)
System.out.println(niit[i-1]);
}
}
Sử dụng vòng lặp WHILE:
public class VongLapWhile {
public static void main(String[] args) {
// Khai báo một mảng
String[] niit = {
"1-Java",
"2-Python",
"3-PHP",
"4-JavaScript",
"5-CSS",
"6-HTML",
"7-Big Data"
};
int i = niit.length - 1;
// In ngược giá trị của mảng cho trước
while (i >= 0) {
System.out.println(niit[i]);
i--;
}
}
}
Sử dụng vòng lặp DO WHILE:
public class VongLapDoWhile {
public static void main(String[] args) {
// Khai báo một mảng
String[] niit = {
"1-Java",
"2-Python",
"3-PHP",
"4-JavaScript",
"5-CSS",
"6-HTML",
"7-Big Data"
};
int i = niit.length - 1;
// In ngược giá trị của mảng cho trước
do {
System.out.println(niit[i]);
i--;
} while (i >= 0);
}
}
Trong thao tác với mảng, bạn có thể sử dụng vòng lặp FOR EACH trong Java.
FOR EACH là một kỹ thuật duyệt mảng khác như các vòng lặp trước.
Nhưng thay vì khai báo hay khởi tạo biến lặp vị trí, chúng ta sẽ khai báo một biến chung về kiểu dữ liệu của mảng, sử dụng biến đó duyệt các phần tử các mảng mà không cần lấy vị trí (index) của mỗi phần tử.
Chú ý, vòng lặp FOR EACH không thể thể chỉnh sửa mảng, không thể tìm vị trí phần tử trong mảng và không thể in ngược mảng.
Vì thế, đây là ví dụ sử dụng vòng lặp for each để in mảng theo chiều xuôi nhé.
public class VongLapForEach {
public static void main(String[] args) {
// Khai báo một mảng
String[] niit = {
"1-Java",
"2-Python",
"3-PHP",
"4-JavaScript",
"5-CSS",
"6-HTML",
"7-Big Data"
};
// In tất cả giá trị của mảng cho trước
for (String i : niit) {
System.out.println(i);
}
}
}
Mặc dù cú pháp và các sử dụng khác nhau nhưng các vòng lặp vẫn cho kết quả như nhau.
Vấn đề là ta nên lựa chọn giải pháp sao cho phù hợp nhất để mang lại hiệu quả tốt nhất nhiệm vụ cần giải quyết.
Chúc mừng bạn đã hiểu rõ hơn về vòng lặp trong Java
Vòng lặp đóng vai trò cực kỳ quan trọng trong lập trình, không chỉ riêng gì lập trình Java đâu.
Mỗi loại vòng lặp trong Java có điểm mạnh và hạn chế riêng, do đó bạn cần phải hiểu rõ cú pháp, cách dùng và dùng trong trường hợp như thế nào thì chương trình của bạn mới có hiệu suất tốt được.
Kiến thức về vòng lặp là cơ bản cần phải thật vững để học sâu hơn về lập trình Java.
Nếu bạn bị hổng kiến thức về vòng lập, có lẽ con đường tu luyện Java của bạn sẽ gian nan vô cùng.
> Nếu bạn thấy tự học Java quá khó khăn. Hãy tham gia ngay Khóa học Java (Fullstack) tại NIIT - ICT Hà Nội để lĩnh hội được tất cả những tinh túy của Java bạn nhé.
Hi vọng qua bài chia sẻ này bạn có thêm kiến thức về vòng lặp trong Java. Nếu cảm thấy chưa hiểu rõ, hãy làm lại các ví dụ trên vài lần bạn nhé.
> Đọc thêm: Printf trong Java
> Tài liệu tham khảo: Java Documentation
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python