CodeGym

Câu lệnh break và continue

NỘI DUNG BÀI VIẾT

Các vòng lặp while, do-while, và for đều kết thúc khi kiểm tra biểu thức điều kiện được giá trị false và chạy tiếp thân vòng lặp trong trường hợp còn lại. Các lệnh break và continue là các lệnh nhảy cho phép thay đổi luồng điều khiển đó.

Lệnh break

Lệnh break khi được thực thi bên trong một cấu trúc lặp hay một cấu trúc switch có tác dụng lập tức chấm dứt cấu trúc đó, chương trình sẽ chạy tiếp ở lệnh nằm tiếp sau cấu trúc đó. Lệnh break thường được dùng để kết thúc sớm vòng lặp (thay vì đợi đến lượt kiểm tra điều kiện lặp) hoặc để bỏ qua phần còn lại của cấu trúc switch.

Chẳng hạn, trong chương trình sau, nếu muốn để vòng for ngừng lại khi người dùng nhập điểm số có giá trị âm thì chúng ta sử dụng lệnh break. Với cài đặt này, khi người dùng nhập một điểm số có giá trị âm, điều kiện (mark < 0) sẽ cho kết quả true, chương trình thoát khỏi vòng for và chạy tiếp từ lệnh if nằm sau đó. Trong trường hợp đó, biến count chưa kịp tăng đến ngưỡng subjects (điều kiện lặp của vòng for chưa kịp bị phá vỡ). Do đó, biểu thức (count >= subjects) trong lệnh if sau đó có nghĩa “vòng for có chạy đủ subjects lần hay không?” hoặc “vòng for có bị ngắt giữa chừng bởi lệnh break hay không?”, hay là “dữ liệu nhập vào có thành công hay không?”.

float sum = 0;
int count, subjects = 10;
Scanner input = new Scanner(System.in);
System.out.print( "Enter the marks for " + subjects + " subjects: ");
for (count = 0; count < subjects; count++) {
float mark;
mark = input.nextFloat();
if(mark < 0)
break;
sum += mark;
}

if(count >= subjects)
System.out.print("Average mark = " + sum/subjects);
else
System.out.println("Error: Invalid mark!");

Lệnh continue

Lệnh continue nằm trong một vòng lặp có tác dụng kết thúc lần lặp hiện hành của vòng lặp đó. Cũng với ví dụ trên, trong phiên bản này, chương trình không ghi nhận điểm số có giá trị âm, cũng không kết thúc chương trình sau khi báo lỗi như phiên bản trước, mà yêu cầu nhập lại cho đến khi nào thành công. Khi gặp điểm số âm được nhập vào (biến mark), lệnh continue được thực thi có tác dụng bỏ qua đoạn lệnh ghi nhận điểm ở nửa sau của thân vòng while (đoạn cộng dồn vào tổng sum và tăng biến đếm count).

Lần lặp được thực hiện sau đó sẽ yêu cầu nhập lại điểm cho môn học đang nhập dở.

float sum = 0;
int count = 0, subjects = 3;
Scanner input = new Scanner(System.in);
System.out.print( "Enter the marks for " + subjects + " subjects: ");
while (count < subjects) {
System.out.print("#" + (count+1) + ": ");
float mark = input.nextFloat();
if (mark < 0) {
System.out.println(mark + " ignored");
continue;
}
sum += mark;
count++;
}
System.out.print("Average mark = "+sum/subjects);

Một điểm cần lưu ý là các lệnh break hay continue chỉ có tác dụng đối với vòng lặp trong cùng chứa nó. Chẳng hạn, nếu có hai vòng lặp lồng nhau và lệnh break nằm trong vòng lặp bên trong, thì khi được thực thi, lệnh break đó chỉ có tác dụng kết thúc vòng lặp bên trong.

Bài viết liên quan

Leave a Reply

Your email address will not be published.