JavaRush /Blog Java /Random-VI /Vòng lặp For trong Java

Vòng lặp For trong Java

Xuất bản trong nhóm
Người ta nói rằng lập trình viên giỏi nhất là lập trình viên lười biếng. Thay vì thực hiện cùng một loại hành động nhiều lần, anh ta sẽ nghĩ ra một thuật toán có thể thực hiện công việc đó cho mình. Và anh ấy sẽ làm tốt nên không cần phải làm lại. Cách sử dụng vòng lặp for trong Java - 1Để tránh phải viết đi viết lại cùng một đoạn mã, người ta đã phát minh ra các vòng lặp. Hãy tưởng tượng rằng chúng ta cần hiển thị các số từ 0 đến 99 trên bảng điều khiển. Mã không có vòng lặp:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
Mã này sẽ mất 100 dòng! Rất nhiều. Và đây là những gì nó sẽ trông giống như một vòng lặp:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Chỉ 3 dòng thôi!

Vòng lặp for là gì?

Vòng lặp for là cấu trúc điều khiển của mã chương trình phá vỡ tính tuyến tính của việc thực thi thuật toán và cho phép bạn thực thi mã được chỉ định nhiều lần. Ví dụ, bạn cần uống 30 giọt thuốc. Thuật toán sẽ giống như thế này:
  1. Chuẩn bị một ly.
  2. Mở nắp.
  3. Lấy 1 giọt.
  4. Lấy 2 giọt.
  5. ...
  6. Nhận 30 giọt.
  7. Đóng thuốc.
  8. Lấy phần nhận được.
Thuật toán này có thể được giải thích nhanh hơn nhiều:
  1. Chuẩn bị một ly.
  2. Mở nắp nhỏ giọt.
  3. Nhận 30 giọt.
  4. Đóng thuốc.
  5. Lấy phần nhận được.
Chúng tôi sử dụng vòng lặp for hầu như mỗi ngày trong cuộc trò chuyện với người khác: “...20 bước xuống phố…”, “...lặp lại 10 bước và 5 lần nữa với tốc độ chậm hơn 2 lần…”, “.. .do 5 lần mua hàng ở nhiều danh mục khác nhau và nhận được giải thưởng…” Tôi có thể tiếp tục rất lâu, nhưng ý nghĩa rất rõ ràng. Trong Java, vòng lặp for rất cần thiết để giữ cho mã của bạn ngắn gọn và súc tích.

Cách vòng lặp for hoạt động

Vòng lặp for được sử dụng như thế này:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Phần kết luận:

0
1
2
3
4
Nếu dịch mục này sang ngôn ngữ của con người, chúng ta sẽ nhận được thông tin sau: “ Tạo một biến i có giá trị ban đầu là 0, cho đến khi nó đạt 5, thêm 1 vào đó và ở mỗi bước hãy ghi giá trị của i vào bảng điều khiển ”. Vòng lặp for trong Java dựa trên ba giai đoạn, có thể được biểu diễn bằng sơ đồ sau: Cách sử dụng vòng lặp for trong Java - 2Điều kiện để thoát khỏi vòng lặp là một biểu thức Boolean. Nếu sai thì vòng lặp sẽ kết thúc. Trong ví dụ trên, biến iđược tăng thêm 1. Nếu giá trị của nó nhỏ hơn 5, vòng lặp sẽ tiếp tục. Nhưng ngay khi inó lớn hơn hoặc bằng 5 thì chu kỳ sẽ dừng lại. Toán tử bộ đếm là một biểu thức thực hiện chuyển đổi trên một biến bộ đếm. Trong ví dụ trên, biến iđược tăng thêm 1. Tức là vòng lặp sẽ được thực hiện đúng 5 lần. Nếu toán tử đếm thêm 2 vào biến ithì kết quả sẽ khác:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Phần kết luận:

0
2
4
Bạn cũng có thể nhân một biến, chia, lũy thừa, nói chung là làm bất cứ điều gì bạn muốn. Điều chính là sự chuyển đổi dẫn đến một con số. Phần thân của vòng lặp là bất kỳ mã nào có thể được thực thi. Trong ví dụ trên, phần thân của vòng lặp xuất giá trị của biến i ra bàn điều khiển, nhưng nội dung của phần thân này bị giới hạn bởi tác vụ và trí tưởng tượng. Tóm tắt toàn bộ sơ đồ, nguyên tắc của vòng lặp for này như sau: mã nằm trong phần thân vòng lặp sẽ được thực thi nhiều lần bằng số lần chuyển đổi mà toán tử bộ đếm sẽ thực hiện trước khi đạt được điều kiện thoát khỏi vòng lặp. . Nếu bạn đặt điều kiện thoát vòng lặp là true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Khi đó đoạn mã sau vòng lặp sẽ bị đánh dấu lỗi unreachable statementvì nó sẽ không bao giờ được thực thi. Một thách thức đối với sự khéo léo: do chạy mã bên dưới, “ Loop ended” sẽ được xuất ra bảng điều khiển hay vòng lặp sẽ chạy vô tận?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Trả lời: sẽ có. Biến i sớm hay muộn sẽ đạt giá trị tối đa và việc tăng thêm sẽ biến nó thành giá trị âm tối đa, do đó điều kiện thoát sẽ được thỏa mãn (i < = -1).

vòng lặp forEach

Khi làm việc với vòng lặp, đôi khi bạn phải lặp qua các mảng hoặc bộ sưu tập. Thông thường, bạn có thể lặp qua một mảng bằng vòng lặp for:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
Và nó đúng. Tuy nhiên, để lặp lại lần lượt tất cả các phần tử của mảng, họ đã nghĩ ra cấu trúc forEach. Chữ ký của nó như sau:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
Bạn có thể lặp qua một chuỗi các chuỗi và in từng chuỗi ra bàn điều khiển theo cách sau:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
Cũng ngắn gọn và súc tích. Quan trọng nhất là không cần phải suy nghĩ về quầy và điều kiện thoát ra, mọi việc đã sẵn sàng cho chúng ta.

Cách sử dụng vòng lặp for

Bây giờ chúng ta hãy xem một vài ví dụ về cách sử dụng vòng lặp for trong Java để giải quyết các vấn đề khác nhau.

Chu kỳ ngược lại (từ lớn đến nhỏ)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Phần kết luận:

5
4
3
2
1

Một số biến và tăng bộ đếm trong thân vòng lặp

Bạn có thể sử dụng nhiều biến trong vòng lặp for, ví dụ: chúng có thể được chuyển đổi trong câu lệnh đếm:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
Phần kết luận:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
Hoặc khai báo hai biến và lặp cho đến khi chúng bằng nhau:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Phần kết luận:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
Không chắc rằng hành động này có bất kỳ giá trị nào, nhưng sẽ rất hữu ích khi biết về khả năng này. Bạn cũng có thể tạo các vòng lặp bên trong trong vòng lặp for. Trong trường hợp này, số bước vòng lặp sẽ được nhân lên:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
Phần kết luận:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
Trong vòng lặp truy cập, jcó thể truy cập bộ đếm của vòng lặp bên ngoài. Điều này làm cho các vòng lặp lồng nhau trở thành một cách lý tưởng để duyệt qua các mảng hai chiều, ba chiều và các mảng khác:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
Phần kết luận:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

Hoàn thành sớm chu kỳ

Nếu bạn cần ngắt một vòng lặp trong khi đang xử lý một vòng lặp, hãy sử dụng toán tử breakđể dừng phần thân hiện tại của vòng lặp. Tất cả các lần lặp tiếp theo cũng bị bỏ qua:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
Phương thức sẽ in vị trí của phần tử được tìm kiếm đầu tiên trong mảng:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Phần kết luận:

1

Chu kỳ vô tận

Một cách khác để tạo vòng lặp for vô hạn là để trống vùng khai báo bộ đếm, điều kiện thoát và câu lệnh bộ đếm:
for (;;) {
}
Nhưng hãy nhớ rằng trong hầu hết các trường hợp, vòng lặp vô hạn là bằng chứng của lỗi logic. Vòng lặp như vậy phải có điều kiện thoát. Cách sử dụng vòng lặp for trong Java - 3
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION