Cộng đồng chia sẻ tri thức Lib24.vn

Cấu trúc điều khiển if - else trong Java

Gửi bởi: Phạm Thọ Thái Dương 23 tháng 10 2019 lúc 9:00:30


Mục lục
* * * * *

1. Cấu trúc điều khiển if - else.

Trong ngôn ngữ lập trình Java cũng như các ngôn ngữ lập trình khác, cấu trúc điều khiển if - else sẽ kiểm tra kết quả của 1 điều kiện và dựa vào kết quả đó để thực hiện các hành động tương ứng.

Cấu trúc if - else có 4 dạng chính mà tôi sẽ giới thiệu ngay sau đây.

Cấu trúc if khuyết else.

if (điều kiên 1) {
    // hành động 1
}
// Lệnh kế tiếp

trong đó điều kiện là 1 biểu thức nào đó bao gồm các biểu thức toán học (so sánh, ...).

Lưu đồ hoạt động:

Giải thích hoạt động của lưu đồ trên: Lưu đồ trên cho thấy khi biên dịch chương trình thì trình biên dịch sẽ vào kiểm tra biểu thức điều kiện trong if. Nếu biểu thức điều kiện đó trả về kết quả là đúng (true) thì hành động tương ứng nằm bên trong khối lệnh sẽ được thực hiện, còn nếu biểu thức điều kiện đó trả về kết quả là sai (false) thì sẽ kết thúc câu lệnh điều khiển và một số câu lệnh khác sẽ được thi hành.

Ví dụ dưới đây sẽ so sánh 2 số và hiển thị ra màn hình số nhỏ nhất trong 2 số.

package cau_truc_ifelse;
 
import java.util.Scanner;
 
public class TimSoNhoNhat {
 
    public static void main(String[] args) {
        int firstNumber, secondNumber;
     
        Scanner scanner = new Scanner(System.in);
        System.out.println("Nhập vào số thứ nhất: ");
        firstNumber = scanner.nextInt();
        System.out.println("Nhập vào số thứ hai: ");
        secondNumber = scanner.nextInt();
         
        int minNumber = firstNumber;    // gán giá trị của biến firstNumber cho minNumber
         
        /*
         * So sánh firstNumber với secondNumber
         * Nếu firstNumber lớn hơn secondNumber thì sẽ gán giá trị của secondNumber cho minNumber
         * Còn không thì không làm gì cả và kết thúc câu lệnh điều khiển.
         */
        if (firstNumber > secondNumber) 
            minNumber = secondNumber;
         
        System.out.println("Số nhỏ nhất trong 2 số " + firstNumber + " và " + secondNumber + 
                        " là " + minNumber);
    }
 
}

Cấu trúc if - else đầy đủ.

if (điều kiên 1) {
    // hành động 1
} else {
    // hành động 2
}
// Lệnh kế tiếp

Lưu đồ hoạt động:

Giải thích hoạt động của lưu đồ trên: Trong lưu đồ này, việc thực hiện của chương trình sẽ rẽ thành hai nhánh tùy theo kết quả của biểu thức điều kiện. Nếu biểu thức điều kiện trả về kết quả đúng thì các lệnh trong khối lệnh của lệnhifđược thực hiện; ngược lại thì những lệnh trong khối lệnh của lệnh elseđược thực hiện.

Ví dụ dưới đây sẽ kiểm tra số bạn vừa nhập vào là số chẵn hay lẻ.

package cau_truc_ifelse;
 
import java.util.Scanner;
 
public class KiemTraSoChanLe {
 
    public static void main(String[] args) {
        int number;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Nhập vào số cần kiểm tra: ");
        number = scanner.nextInt();
         
        // số chẵn là số chia hết cho 2
        if (number % 2 == 0) {
            System.out.println(number + " là số chẵn");
        } else {
            // ngược lại là số lẻ
            System.out.println(number + " là số lẻ");
        }
    } 
 
}
Kết quả sau khi biên dịch chương trình:

Cấu trúc điều khiển if - else if - else.

Cấu trúc điều khiển if - else if - else là một tập hợp các câu lệnh ifelse ifvà elseđược dùng để giải quyết những yêu cầu phức tạp mà chương trình đề ra.

if (điều kiên 1) {
    // hành động 1
} else if (điều kiện 2) {
    // hành động 2
} else if (điều kiện 3) {
    // hành động 3
} ... else {
    // hành động n
}
// Lệnh kế tiếp

Lưu đồ hoạt động:

Giải thích hoạt động của lưu đồ trên: Trong lưu đồ này, việc thực hiện của chương trình sẽ rẽ thành nhiều nhánh tùy theo kết quả của biểu thức điều kiện. Nếu biểu thức điều kiện trả về kết quả đúng thì các lệnh trong khối lệnh của lệnh if được thực hiện, nếu không thì các lệnh trong khối lệnh của lệnh else if được thực hiện. Và nếu tất cả các kết quả biểu thức điều kiện của ifvà else if đều không đúng thì câu lệnh trong elsesẽ được thực thi.

Ví dụ dưới đây sẽ so sánh số bạn nhập vào với 10 và hiển thị ra kết quả so sánh.

package cau_truc_ifelse;
 
import java.util.Scanner;
 
public class SoSanhVoiSo10 {
 
    public static void main(String[] args) {
        float number;
        Scanner scanner = new Scanner(System.in);
         
        System.out.println("Nhập vào số cần so sánh: ");
        number = scanner.nextFloat();
         
        if (number < 10) {
            System.out.println("Số bạn vừa nhập nhỏ hơn 10");
        } else if (number == 10) {
            System.out.println("Số bạn vừa nhập bằng 10");
        } else {
            System.out.println("Số bạn vừa nhập lớn hơn 10");
        }
    }
 
}

Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình:

Các bạn thấy khi biên dịch chương trình tôi nhập vào số 12.1 thì trình biên dịch sẽ tiến hành thực hiện các bước sau:

Bước 1: Kiểm tra số 12.1 có nhỏ hơn 10 hay không? Vì số 12.1 lớn hơn 10 nên kết quả của biểu thức so sánh number < 10 sẽ trả về false, vì vậy câu lệnh trong khối lệnh ifsẽ không được thực hiện.

Bước 2: Kiểm tra số 12.1 có bằng 10 hay không? Kết quả là số 12.1 không bằng 10 nên câu lệnh trong khối lệnh củaelse if (number == 10)sẽ bị trình biên dịch bỏ qua.

Bước 3: Vì tất cả các biểu thức so sánh của ifvà else ifđều sai nên câu lệnh trong elsesẽ được thực thi và lúc này kết quả của chương trình sẽ là "Số bạn vừa nhập lớn hơn 10".

Cấu trúc if - else lồng nhau.

Cấu trúc if - else lồng nhau (hay còn gọi là if bên trong if) là cấu trúc phức tạp nhất của cấu trúc điều khiểnif - else. Cú pháp của cấu trúc này như sau:

if (điều kiện 1) {
    // Nếu điều kiện 1 trả về kết quả đúng thì điều kiện 2 trong if bên dưới sẽ được kiểm tra
    if (điều kiện 2) {
        // Nếu điều kiện 2 trả về kết quả đúng thì hành động trong if sẽ được thực hiện
    } else {
        // Nếu điều kiện 2 trả về kết quả sai thì hành động trong else sẽ được thực hiện
    }
} else {
    // Nếu điều kiện 1 trả về kết quả sai thì hành động trong else này sẽ được thực hiện 
}

Ví dụ dưới đây sẽ yêu cầu bạn nhập 3 số bất kỳ từ bàn phím và hiển thị ra màn hình số lớn nhất trong 3 số đó.

package cau_truc_ifelse;
 
import java.util.Scanner;
 
public class TimSoLonNhatTrong3So {
 
    public static void main(String[] args) {
        int firstNumber, secondNumber, thirdNumber, largestNumber;
        Scanner scanner = new Scanner(System.in);
         
        System.out.println("Nhập vào số thứ nhất: ");
        firstNumber = scanner.nextInt();
        System.out.println("Nhập vào số thứ hai: ");
        secondNumber = scanner.nextInt();
        System.out.println("Nhập vào số thứ ba: ");
        thirdNumber = scanner.nextInt();
         
        if (firstNumber >= secondNumber) {
            if (firstNumber >= thirdNumber) {
                largestNumber = firstNumber;
            } else {
                largestNumber = thirdNumber;
            }
        } else if (secondNumber >= thirdNumber) {
            largestNumber = secondNumber;
        } else {
            largestNumber = thirdNumber;
        }
         
        System.out.println("Số lớn nhất trong 3 số " + firstNumber + ", " + secondNumber + 
                        " và " + thirdNumber + " là " + largestNumber);
    }
 
}
Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình:

Trong chương trình này, tôi nhập vào 3 số lần lượt là 9, 20 và 2  thì trình biên dịch sẽ tiến hành thực hiện các bước sau:

Bước 1: Biểu thức if (firstNumber >= secondNumber) so sánh số 9 nhỏ hơn 20 nên trả về kết quả là sai nên các câu lệnh tiếp theo trong khối lệnh ifnày sẽ không được thực thi.

Bước 2: Biểu thức else if (secondNumber >= thirdNumber)sẽ so sánh số 20 và 2 thì thấy 20 lớn hơn 2 nên trình biên dịch sẽ gán giá trị 20 cho biến largestNumber.

Bước 3: Hiển thị giá trị của biến largestNumberra màn hình. Quá trình biên dịch kết thúc.

2. Cấu trúc toán tử điều kiện 3 ngôi.

Toán tử điều kiện 3 ngôi là cấu trúc thay thế của biểu thức điều kiện if - else trong Java.

Cú pháp:

[Biểu thức điều kiện] ? [Giá trị 1] : [Giá trị 2];

Công dụng: Toán tử điều kiện 3 ngôi sẽ kiểm tra giá trị của biểu thức điều kiện, nếu biểu thức này trả về giá trị đúng thì biểu thức giá trị 1 được tính toán và trở thành giá trị của biểu thức, nếu biểu thức điều kiện trả về giá trị sai thì biểu thức giá trị 1 được tính toán và trở thành giá trị của biểu thức.

Đoạn chương trình dưới đây sẽ kiểm tra số nhập vào là số chẵn hay lẻ bằng cách sử dụng toán tử điều kiện 3 ngôi.

package cau_truc_ifelse;
 
import java.util.Scanner;
 
public class ToanTuDieuKien3Ngoi {
 
    public static void main(String[] args) {
        int number;
        Scanner scanner = new Scanner(System.in);
         
        System.out.println("Nhập vào số cần kiểm tra: ");
        number = scanner.nextInt();
         
        /*
         * Sử dụng toán tử điều kiện 3 ngôi
         */
        String ketQua = (number % 2 == 0) ? "Số " + number + " là số chẵn" : "Số " + number + 
            " là số lẻ";
        System.out.println(ketQua);
    } 
 
}
Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình: Trong chương trình này, tôi nhập số cần kiểm tra là số 3 thì trình biên dịch sẽ kiểm tra số 3 là số không chia hết cho 2 nên biểu thức number % 2 == 0 sẽ trả về kết quả là sai nên biểu thức phía sau dấu : sẽ được thực thi. Vì vậy, trình biên dịch sẽ hiển thị ra thông báo "Số 3 là số lẻ".

3. Lời kết.

Trong bài này tôi đã giới thiệu đến các bạn cấu trúc điều khiển đầu tiên đó là cấu trúc điều khiển if - else và các dạng chính của nó. Ngoài ra, tôi cũng đã đề cập đến cấu trúc của toán tử điều kiện 3 ngôi. Cuối bài này, tôi có đưa ra một số các bài tập cho các bạn luyện tập. Sang bài sau, chúng ta sẽ tìm hiểu về cấu trúc switch - case và cách sử dụng cấu trúc này. Các bạn theo dõi nhé!

Nguồn: freetuts

Các bài học liên quan