Chương 7: Vòng lặp
7.4) Thoát khỏi vòng lặp
Điều kiện để thực hiện trong vòng lặp thường dùng để thoát vòng lặp (tức là thường ta lặp đến khi được kết quả mong muốn thì dừng vòng lặp lại ) và ta cần phải đảm bảo sự kết thúc của vòng lặp nếu không chương trình của chúng ta sẽ chạy mãi có thể dẫn đến lỗi. Điều kiện để thoát vòng lặp cần rõ ràng và đảm bảo rằng vòng lạp sẽ kết thúc
Ví dụ bài toán nhập vào một số dương, in ra màn hình ba số nguyên tố nhỏ nhất lớn hơn số nhập vào :
import java.util.Scanner;
public class Class1 {
public int isPrime(int soKiemTra) {
int ketQua = 0;
if (soKiemTra != 1) {
for (int i = 2; i <= sqrt(soKiemTra); i++) {
if ((soKiemTra % i) == 0) { ketQua = 1; break; } } } return ketQua; }
int i = 0; do i++; while (i * i <= number); return i - 1; }
public static void main(String arg[]) { Scanner nhap = new Scanner(System.in); Class1 doiTuong = new Class1();
System.out.print("so nhap vao : ");
int soKhoiTao = nhap.nextInt();
int dem = 0;
while (dem < 3) { soKhoiTao++;
if (doiTuong.isPrime(soKhoiTao) == 0) { System.out.print(" " + soKhoiTao); dem++;
}} }
}} }
Bài toán trên đầu tiên ta lập một method kiểm tra tính nguyên tố của một số (isPrime) để tiện cho viết code
Ở bài toán trên điều kiện thoát vòng lặp đơn giản là khi dem = 3, thử tưởng tượng nếu không có điều kiện kết thúc bài toán, chương trình sẽ chạy vô hạn.
Trong khi làm việc với vòng lặp ta đôi khi cần thoát khỏi vòng lặp giữa chừng vì nhiều nguyên nhân như tránh vòng lạp vô hạn, giảm thiểu tính toán, ta thường dùng từ khóa Break để thoát khỏi vòng lặp.
import java.util.Scanner;
public class Class1 {
public static int sqrt(int number) {
int i=0;
do i++;
while (i*i<=number);
return i-1; }
public static void main(String arg[]) {
int ketqua = 0;
Scanner nhap = new Scanner(System.in);
System.out.println("so can kiem tra tinh nguyen to: "); int soKiemTra= nhap.nextInt();
int ketqua=0;
for (int i = 2; i <= sqrt(soKiemTra); i++) if (soKiemTra%i == 0){
ketqua=1; break;
}
if (ketqua == 1)
System.out.println("day khong phai so nguyen to"); else
System.out.println("day la so nguyen to"); }
}
nên thoát khỏi vòng lặp để giảm thời gian tính toán
Hay đơn thuần là bài toán sau: nhập vào một dãy số tự nhiên cho tới khi được 20 phần tử hoặc là nhập vào số âm thì kết thúc quá trình nhập
import java.util.Scanner;
public class ExcampleClass {
public static void main(String arg[]) { Scanner nhap = new Scanner(System.in);
int[] mang = new int[20];
int n = 0;
int trungGian = 0;
while (n < 19) {
System.out.print("nhap vao day : "); trungGian = nhap.nextInt(); if (trungGian < 0) break; else mang[n] = trungGian; n++; } } }
Ở bài toán trên kết thúc vòng lặp cần có một trong hai điều kiện là nhập được 20 số hoặc là nhập vào số âm, như vậy một trong những cách giải quyết thoát vòng lặp là điều kiện độ dài dãy cho trong ngoặc còn kiểm tra tính âm dương cho vào break.