Continue trong Java và cách bỏ qua vòng lặp | Laptrinhcanban.com

Continue trong Java và cách bỏ qua vòng lặp

Hướng dẫn cách sử dụng lệnh continue trong Java. Bạn sẽ học được cách dùng lệnh continue để bỏ qua lượt lặp hiện tại của vòng lặp trong Java, cũng như cách sử dụng lệnh continue kèm label trong các vòng lặp lồng sau bài học này.

Lệnh continue trong Java

Lệnh continue trong Java được sử dụng để bỏ qua lượt lặp hiện tại và bắt đầu lượt lặp kế tiếp của vòng lặp trong Java . Các vòng lặp trong Java như vòng lặp while hoặc vòng lặp for sẽ bỏ qua lượt lặp hiện tại khi lệnh continue được thực hiện. Tất cả các xử lý còn lại đằng sau lệnh continue trong lượt lặp hiện tại đều bị bỏ qua và chương trình bắt đầu lượt lặp kế tiếp.

Cú pháp của lệnh continue trong Java như sau:

continue;

Câu lệnh continue trong Java được sử dụng kết hợp với câu lệnh if trong Java và được miêu tả trong khối lệnh while hoặc khối lệnh for giống như sau đây::

for (biểu thức khởi tạo ; biểu thức điều kiện ; biểu thức thay đổi ) {
    Câu lệnh 1 trong khối for ;
    Câu lệnh 2 trong khối for ;
    if (biểu thức điều kiện if){
        continue;
        }
    Câu lệnh 3 trong khối for ;
}

Để hiểu rõ hơn, chúng ta sẽ sử dụng lại ví dụ trong bài For trong Java và cách xử lý chi tiết. Chúng ta có một vòng lặp for để in ra màn hình 3 lần dòng hello như sau:

class Main{
public static void main(String[] args){
for (int i = 1; i < 4; i++){
System.out.println("hello ", i);
}
System.out.println("bye");
}


//> hello 1
//> hello 2
//> hello 3
//> bye

Chúng ta sẽ dùng lệnh continue để bỏ qua và không in dòng chữ hello ở vòng lặp thứ 2 như sau:

class Main{
public static void main(String[] args){
for (int i = 1; i < 4; i++){
if (i == 2){
System.out.println("CONTINUE!\n");
continue;
}
System.out.println("hello ", i);
}
System.out.println("bye");
}

Khi đó vòng lặp for continue trong Java sẽ chạy như sau:
Lượt lặp đầu tiên:

  1. Khai báo biến i và gán giá trị ban đầu i = 1
  2. Biểu thức điều kiện For (i < 4) là TRUE nên thực thi vòng lặp
  3. Biểu thức điều kiện IF i == 2 là là False nên khối lệnh if (chứa lệnh continue) được bỏ qua
  4. Chạy lệnh System.out.println("hello ", i);
  5. Biểu thức thay đổi tăng giá trị i lên 1 đơn vị thành i=2

Lượt lặp thứ 2:

  1. Biểu thức điều kiện For (i < 4) là TRUE nên thực thi vòng lặp
  2. Biểu thức điều kiện IF i == 2 là True nên các lệnh trong khối if (bao gồm cả lệnh continue) được thực thi. Do lệnh continue được chạy nên các lệnh còn lại của vòng lặp đằng sau continue cũng sẽ được bỏ qua.
  3. Biểu thức thay đổi tăng giá trị i lên 1 đơn vị thành i=3

Lượt lặp thứ 3:

  1. Biểu thức điều kiện For (i < 4) là TRUE nên thực thi vòng lặp
  2. Biểu thức điều kiện IF i == 2 là False nên khối lệnh if (chứa lệnh continue) được bỏ qua
  3. Chạy lệnh System.out.println("hello ", i);
  4. Biểu thức thay đổi tăng giá trị i lên 1 đơn vị thành i=4

Lượt lặp thứ 4:

  1. Biểu thức điều kiện i < 4 là FALSE nên thoát khỏi vòng lặp

Ngoài vòng lặp:

  1. Chạy lệnh tiếp theo System.out.println("bye"); sau khi thoát vòng lặp.

Kết quả, vòng lặp for ở trên sẽ in ra màn hình console như sau:

hello 1
CONTINUE!
hello 3
bye

Chúng ta có thể khái quát xử lý bằng sơ đồ khối của lệnh continue trong Java khi sử dụng trong vòng lặp for như sau:

Lệnh continue trong Java

Sử dụng lệnh continue bỏ qua lượt lặp hiện tại trong vòng lặp for Java

Chúng ta sử dụng lệnh continue để bỏ qua lượt lặp hiện tại trong vòng lặp for Java và thực hiện các lượt lặp kế tiếp. Lệnh while sẽ bỏ qua lượt lặp while hiện tại khi lệnh continue được thực hiện, tất cả các xử lý sau lệnh continue đều bị bỏ qua và chương trình bắt đầu một lượt lặp mới.

Hãy xem ví dụ về vòng lặp for để tính tổng các số từ 1 đến 10. Nếu không sử dụng lệnh continue thì chương trình sẽ chạy như sau:

class Main{
public static void main(String[] args){
int sum = 0;
for (int i = 1; i <=10; i++){
System.out.println(i);
sum += i ;
}
System.out.println("SUM=%d",sum);

}

//> 1
//> 2
//> 3
//> 4
//> 5
//> 6
//> 7
//> 8
//> 9
//> 10
//> SUM 55

Tuy nhiên khi chúng ta sử dụng thêm lệnh continue và muốn bỏ qua vòng lặp khi biến num có giá trị bằng 2, chương trình sẽ không in ra giá trị num bằng 2 cũng như không tính num vào tổng chung như sau:

class Main{
public static void main(String[] args){
int sum = 0;
for (int i = 1; i <=10; i++){
if (i == 2){
System.out.println("CONTINUE!\n");
continue;
}
System.out.println(i);
sum += i ;
}
System.out.println("SUM=%d",sum);

}

//> 1
//> CONTINUE!
//> 3
//> 4
//> 5
//> 6
//> 7
//> 8
//> 9
//> 10
//> SUM 53

Bạn có thể thấy chúng ta đã bỏ qua vòng lặp for trong Java bằng lệnh continue tại vị trí num ==2 rồi phải không nào?

Về cách sử dụng vòng lặp for, hãy xem chi tiết tại bài viết Vòng lặp for trong Java

Sử dụng lệnh continue để bỏ qua lượt lặp hiện tại trong vòng lặp while Java

Chúng ta sử dụng lệnh continue để bỏ qua lượt lặp hiện tại trong vòng lặp while Java và thực hiện các lượt lặp kế tiếp. Lệnh while sẽ bỏ qua lượt lặp while hiện tại khi lệnh continue được thực hiện, tất cả các xử lý sau lệnh continue đều bị bỏ qua và chương trình bắt đầu một lượt lặp mới.

Hãy xem ví dụ về vòng lặp while để in ra các số từ 1 đến 10. Nếu không sử dụng lệnh continue thì chương trình sẽ chạy như sau:

class Main{
public static void main(String[] args){
int num = 1;

while (num <= 10){
System.out.println(num);
num++;
}

}

//> 1
//> 2
//> 3
//> 4
//> 5
//> 6
//> 7
//> 8
//> 9
//> 10

Tuy nhiên khi chúng ta sử dụng thêm lệnh continue và muốn bỏ qua vòng lặp khi biến num có giá trị bằng 2, chương trình sẽ không in ra giá trị num bằng 2 như sau:

class Main{
public static void main(String[] args){
int num = 1;

while (num <= 10){
if (num == 2){
System.out.println("CONTINUE!\n");
num++;
continue;
}
System.out.println(num);
num++;
}

}

//> 1
//> CONTINUE!
//> 3
//> 4
//> 5
//> 6
//> 7
//> 8
//> 9
//> 10

Bạn có thể thấy chúng ta đã bỏ qua vòng lặp while trong Java bằng lệnh continue tại vị trí num ==2 rồi phải không nào?

Về cách sử dụng vòng lặp while, hãy xem chi tiết tại bài viết Vòng lặp while trong Java

Lệnh continue trong vòng lặp lồng

Giống như Kiyoshi đã hướng dẫn ở trên, thì lệnh continue trong các vòng lặp như for hay while sẽ bỏ qua lượt lặp hiện tại, và tiến hành chạy các lượt lặp tiếp theo của vòng lặp đó. Tuy nhiên trong các vòng lặp lồng chứa các vòng lặp bên trong vòng lặp, việc bỏ qua lượt lặp này chỉ có tác dụng với vòng lặp chứa trực tiếp lệnh continue mà thôi.

Chúng ta hãy cùng xem vòng lặp for 2 lần sau đây:

for (int i = 1; i < 5; i++){

for (int j = 1; j < 5; j++){
if (i * j % 3 == 0){
continue;
}

System.out.println(i + " * " + j + " = " + i * j);
}

System.out.println("Next");
}

System.out.println("End");

Vòng lặp for 2 lần này chứa 2 vòng lặp là vòng lặp ngoài (biến i) và vòng lặp trong (biến j). Lệnh continue được chứa trực tiếp ở vòng lặp trong, và sẽ được thực thi nếu tích của hai biến i và j là bội số của 3.

Khi lệnh continue được thực thi, một lượt lặp sẽ được bỏ qua, tuy nhiên chỉ có vòng lặp trực tiếp chứa lệnh continue đó được bỏ qua lượt lặp hiện tại mà thôi.

Lệnh continue trong vòng lặp lồng

Trong trường hợp muốn chỉ định vị trí bỏ qua lượt lặp bằng lệnh continue một cách tự do trong chương trình Java, hãy tham khảo cách dùng lệnh continue có nhãn (label) như dưới đây.

Lệnh continue kèm label trong Java

Lệnh continue kèm label trong Java là câu lệnh được sử dụng kèm với các label(nhãn) có tác dụng xác định vị trí vòng lặp sẽ được bỏ qua lượt lặp khi continue được thực thi.

Có hai loại label có thể sử dụng kèm continue là InnerOuter, có ý nghĩa là Vòng lặp bên trongVòng lặp bên ngoài. Chúng ta sử dụng lệnh continue kèm label trong Java với cú pháp sau đây:

Outer:
Vòng lặp ngoài:

    Inner:
    Vòng lặp trong:
            continue label (Inner or Outer);

Trong đó, việc viết các label (nhãn) Inner và Outer trước khi viết vòng lặp có tác dụng đặt tên label cho vòng lặp đó. Và label viết sau lệnh continue, có tác dụng chỉ định vòng lặp Inner hay vòng lặp Outer sẽ được bỏ qua lượt lặp sau khi thực thi continue.

Ví dụ cụ thể, chúng ta sẽ đặt tên nhãn cho các vòng lặp ở trên như sau:

Outer:
for (int i = 1; i < 6; i++){

Inner:
for (int j = 1; j < 6; j++){
if (i * j % 4 == 0){
continue Outer;
}

System.out.println(i + " * " + j + " = " + i * j);
}

System.out.println("Next");
}

System.out.println("End");

Khác với vòng lặp lồng không chứa nhãn sẽ bỏ qua vòng lặp trực tiếp chứa lệnh continue, thì trong vòng lặp lồng này, do chúng ta chỉ định continue Outer; nên sau khi thực thi continue, thì vòng lặp ngoài (được gán nhãn Outer) sẽ được bỏ qua.

Lệnh continue kèm label trong Java

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách sử dụng lệnh continue trong Java rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về Java trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.