Java: break và continue

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

1. Câu lệnh break;

Câu lệnh break; dùng được cho tất cả các loại vòng lặp của Java (whiledo-whilefor và for cải tiến).

Câu lệnh break; có tác dụng thoát khỏi vòng lặp tức thì và bỏ qua mọi lệnh ở phía sau nó trong vòng lặp.

Cú pháp:

break;

Ví dụ 1: Hãy nhập vào một số nguyên N và kiểm tra xem N có phải số nguyên tố không?

Chương trình được viết như sau:

import java.util.Scanner;

public class Test1 {
  public static void main(String[] args) {
    /*Nhập vào một số N bất kỳ và kiểm tra xem N có phải
      là số nguyên tố hay không?
      Số nguyên tố là số nguyên dương >1 và chỉ chia hết cho
      1 và chính nó. Ví dụ: 2, 3, 5, 7, 11, 13, ...
      Cách thức xử lý: Cho 1 biến chạy i chạy từ 2 -> sqrt(N),
      và dùng 1 biến đánh dấu, nếu N chia hết cho i thì đánh dấu
      lại. Dựa trên giá trị của biến đánh dấu để kết luận N có
      là số nguyên tố hay không.
    */

    float N;
    boolean isPrime = true; //Đây là biến đánh dấu, ban đầu chứa
    //1 với mục đích giả sử ban ban đầu
    //N là số nguyên tố

    System.out.print("Please enter any number: ");
    N = new Scanner(System.in).nextFloat();

    if (N > 1 && N == (int) N) { //Nếu N>1 và N là số nguyên thì mới check nguyên tố
      for (int i = 2; i <= Math.sqrt(N); i++) {
        if ((int) N % i == 0) { //nếu N chia hết cho i
          isPrime = false; //thì đặt biến isPrime chứa 0
          break; //, đồng thời thoát khỏi vòng lặp, không cần lặp thêm nữa
        }
      }
      if (isPrime) { //Nếu biến isPrime không thay đổi giá trị so với ban đầu (true)
        System.out.printf("%f is a prime number", N); //thì khẳng định N là số nguyên tố
      } else { //nếu không thì
        //khẳng định N không phải số nguyên tố
        System.out.printf("%.0f is not a prime number", N);
      }
    } else { //ngược lại thì
      //khẳng định N không đủ điều kiện xác định tính nguyên tố.
      System.out.printf("%g does not qualify for primality", N);
    }
  }
}

Ví dụ 2: Nhập vào một chuỗi bất kỳ và kiểm tra xem chuỗi đó có chứa ký số (ký tự số, chữ số) hay không?

Solution tham khảo viết dưới dạng không dùng hàm như sau:

import java.util.Scanner;

public class Test1 {
  public static void main(String[] args) {
    ///Bài toán: Hãy kiểm tra xem có tồn tại ký số
    ///(ký tự số hay chữ số) trong chuỗi hay không?
    String str;
    do {
      System.out.print("Input a string (0<str<30): ");
      str = new Scanner(System.in).nextLine();
    } while (!(0 < str.length() && str.length() < 30));

    boolean found = false;
    for (int i = 0; i < str.length(); i++) {
      if (str.charAt(i) >= '0' && str.charAt(i) <= '9')
      {
        /*
            nếu một ký tự bất kỳ của chuỗi nằm
            trong đoạn ['0','9'], tức là chuỗi chứa ký số
        */
        found = true; //, thì đánh dấu việc tìm thấy ký số
        //trong chuỗi.
        System.out.printf("String \"%s\" contains digits", str);
        break; //thoát khỏi vòng lặp for mà không cần lặp thêm lần nào.
      }
    }
    if (!found) {
      System.out.printf("String \"%s\" does not contain digits", str);
    }
  }
}

Solution tham khảo viết dưới dạng dùng hàm như sau:

import java.util.Scanner;

public class Test1 {
  static void inputString() {
    do {
      System.out.print("Input a string (0<str<30): ");
      str = new Scanner(System.in).nextLine();
    } while (!(0 < str.length() && str.length() < 30));
  }

  static void checkNumericCharater() {
    boolean found = false;
    for (int i = 0; i < str.length(); i++) {
      if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
        /*
          nếu một ký tự bất kỳ của chuỗi nằm
          trong đoạn ['0','9'], tức là chuỗi chứa ký số
        */
        found = true; //, thì đánh dấu việc tìm thấy ký số
        //trong chuỗi.
        System.out.printf("String \"%s\" contains digits", str);
        break; //thoát khỏi vòng lặp for mà không cần lặp thêm lần nào.
      }
    }
    if (!found) {
      System.out.printf("String \"%s\" does not contain digits", str);
    }
  }

  static String str;

  public static void main(String[] args) {
    ///Bài toán: Hãy kiểm tra xem có tồn tại ký số
    ///(ký tự số hay chữ số) trong chuỗi hay không?
    inputString();
    checkNumericCharater();
  }
}

Ví dụ 3: Nhập vào một chuỗi bất kỳ và cắt những ký tự trắng (space) ở cuối chuỗi?

Sau đây là solution tham khảo:

import java.util.Scanner;

public class Test1 {
  public static void main(String[] args) {
    //* Bài toán: Hãy cắt các ký tự trắng (space) ở
    //cuối chuỗi?
    //* Thuật toán: Ta cho một biến chạy i chạy từ cuối
    //chuỗi str về đầu chuỗi, nếu phát hiện ký tự nào không
    //phải là ký tự cách thì lấy phần chuỗi từ 0 đến
    //sau ký tự chỉ số i và gán lại cho str.
    //* Tiến hành xử lý:
    String str;
    do {
      System.out.print("Input a string (0<str<30): ");
      str = new Scanner(System.in).nextLine();
    } while (!(0 < str.length() && str.length() < 30));
    System.out.printf("Before cutting space characters at the " +
      "end of the string: \"%s\"%n", str);
    for (int i = str.length() - 1; i >= 0; i--) {
      //cho biến chạy i chạy từ cuối chuỗi về
      //đầu chuỗi.
      if (str.charAt(i) != ' ') //nếu ký tự chỉ số i
      {//không phải ký tự cách
        str = str.substring(0, i + 1);//thì lấy phần chuỗi từ
        //chỉ số 0 đến sau ký tự chỉ số i rồi gán lại cho str
        break;//và thoát khỏi vòng lặp ngay
      }
    }
    System.out.printf("After cutting space characters at the " +
      "end of the string: \"%s\"%n", str);
  }
}

Sau đây là solution tham khảo sử dụng hàm để xử lý:

import java.util.Scanner;

public class Test1 {
  static String str;

  static void InputString() {
    do {
      System.out.print("Input a string (0<str<30): ");
      str = new Scanner(System.in).nextLine();
    } while (!(0 < str.length() && str.length() < 30));
  }

  static void CutSpace() {
    for (int i = str.length() - 1; i >= 0; i--) {
      //cho biến chạy i chạy từ cuối chuỗi về
      //đầu chuỗi.
      if (str.length() != ' ') { //nếu ký tự chỉ số i
        //không phải ký tự cách
        str = str.substring(0, i + 1);//thì lấy phần chuỗi từ
        //chỉ số 0 đến sau ký tự chỉ số i rồi gán lại cho str
        break;//và thoát khỏi vòng lặp ngay
      }
    }
  }

  public static void main(String[] args) {
    //* Bài toán: Hãy cắt các ký tự trắng (space) ở
    //cuối chuỗi?
    //* Thuật toán: Ta cho một biến chạy i chạy từ cuối
    //chuỗi str về đầu chuỗi, nếu phát hiện ký tự nào không
    //phải là ký tự cách thì lấy phần chuỗi từ 0 đến
    //sau ký tự chỉ số i và gán lại cho str.
    //* Tiến hành xử lý:

    InputString();

    System.out.printf("Before cutting space characters at the " +
      "end of the string: \"%s\"", str);

    CutSpace();

    System.out.printf("%nAfter cutting space characters at the " +
      "end of the string: \"%s\"", str);
  }
}

2. Câu lệnh continue;

Câu lệnh continue; dùng để bỏ qua những lệnh còn lại trong khối lệnh của lần lặp hiện thời.

Theo đó tất cả các câu lệnh phía sau continue; nhưng nằm trong khối lệnh của vòng lặp sẽ bị bỏ qua tại lần lặp hiện thời.

Cú pháp:

continue;

Ví dụ 1: In ra những số chẵn trong đoạn 1-100 dùng continue?

Solution tham khảo như sau:

public class Test1 {
  public static void main(String[] args) {
    System.out.println("Even numbers in the range 1-100:");
    for (int i = 1; i <= 100; i++) { //lấy từng số ra
      if (i % 2 != 0) { //kiểm tra nếu không chia hết cho 2
        continue; //thì bỏ qua lần lặp hiện thời
      }
      System.out.println(i); //lệnh này sẽ được thực thi
      //nếu i chia hết cho 2
    }
  }
}
» Tiếp: Bài tập phần vòng lặp
« Trước: do-while
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!