Trong cuộc sống hằng ngày, chúng ta luôn thực hiện các quyết định để xác định sự đúng/sai hoặc lên kế hoạch cụ thể cho một việc gì đó. Ví dụ: Nếu anh A hỏi tôi điều gì đó thì tôi sẽ trả lời, nếu không thì tôi sẽ làm một việc khác.
Tìm hiểu cách sử dụng câu lệnh if và switch trong java

Rẽ nhánh điều kiện với if-else

Tương tự, trong ngôn ngữ Java, chúng ta có câu lệnh if cho phép chúng ta kiểm tra một biểu thức (expression) là true hoặc false. Dựa trên kết quả của biểu thức này chúng ta có thể đưa ra quyết định sẽ cho chương trình sẽ thực hiện những công việc nào.

Syntax: if statement
if (bieu_thuc_boolean) {
   // Các câu lệnh sẽ thực thi nếu bieu_thuc_boolean trả về true
}
Syntax: if-else statement
if (bieu_thuc_boolean){
   // Thực thi khi bieu_thuc_boolean trả về true
} else {
   // Thực thi khi bieu_thuc_boolean trả về false
}
Lấy 1 ví dụ trong Java để các bạn dễ hình dung về cách sử dụng của câu lệnh if nhé. Chúng ta tính tổng hóa đơn và thực hiện giảm giá cho khách hàng dựa trên tổng hóa đơn. Nếu tổng hóa đơn lớn hơn 100 đô la thì chúng ta sẽ áp dụng 20% discount, nếu không thì chỉ được áp dụng 10% discount mà thôi.
if (totalPrice > 100) {
  totalPrice = totalPrice * 0.8;
  System.out.println("You will get a 20% discount");
} else {
  totalPrice = totalPrice * 0.9;
  System.out.println("You will get a 10% discount");
}
Các câu điều kiện if, if-else có thể lồng vào nhau để thực hiện những công việc phức tạp. Mà tùy thuộc vào yêu cầu của bài toán chúng ta mới áp dụng nhé. Việc rẽ nhánh điều kiện trong chương trình Java cần phải thận trọng bởi nếu như chúng ta đưa ra quyết định không đúng đắn có thể ảnh hưởng đến toàn bộ chương trình.

Tìm hiểu về switch

Câu lệnh switch đôi khi được sử dụng thay thể cho câu lệnh if. Giả sử chúng ta sử dụng câu lệnh if-else liên tục chỉ để kiểm tra 1 giá trị thì chương trình sẽ khá khó hiểu. Trong trường hợp này, chúng ta sẽ chuyển sang sử dụng câu lệnh switch.

Expression nằm trong câu lệnh switch sẽ được so sánh với 1 danh sách các trường hợp (case). Nếu expression phù hợp với case nào thì nó sẽ thực hiện đoạn mã bên trong case đó.

Trong ví dụ bên dưới đây, tôi có 1 lớp ReportCard bao gồm 1 phương thức là convertGrades cho phép tôi chuyển đổi điểm hệ 100 sang các ký tự A, B, C, D để xếp loại. Nếu như sử dụng câu lệnh if-else để in ra message thì chắc chắn nhìn nó sẽ rất rối mắt. Chính vì vậy tôi sẽ sử dụng switch cho trường hợp này.
public static void main(String[] args) {
  ReportCard reportCard = new ReportCard();
  char yourGrade = reportCard.convertGrades(88);

  switch (yourGrade) {
    case 'A':
      System.out.println("Excellent Job!");
      break;
    case 'B':
      System.out.println("Good Job!");
      break;
    case 'C':
      System.out.println("Need to work more");
      break;
    case 'D':
      System.out.println("Change your attitude!");
      break;
   }
}
Một lưu ý là phải luôn sử dụng lệnh break sau mỗi trường hợp (case) để thoát khỏi câu lệnh switch nhé. Nếu không có các câu lệnh break thì đoạn code trên sẽ in ra cả 4 dòng mặc dù biến yourGrade chỉ có 1 giá trị.

Hạn chế của của câu lệnh switch trong Java là nó chỉ nhận expression có kiểu là int, char, byte, short, string và enum.

Toán tử ? :

Trong Java, chúng ta cũng có toán tử ? : mà chúng ta thường hay gọi là biểu thức tam phân. Nó được sử dụng để thay thế cho câu lệnh if.
Exp1 ? Exp2 : Exp3;
exp1, epx2 và exp3 là các biểu thức. Ở đây các bạn có thể hiểu như sau, nếu exp1 trả về giá trị true thì exp2 sẽ được thực thi và kết quả trả về của exp2 là giá trị của toàn bộ biểu thức, ngược lại exp3 sẽ được thực thi và giá trị trả về của biểu thức exp3 là giá trị của toàn bộ biểu thức.

Ví dụ chúng ta sẽ tính discount cho khách hàng như trong ví dụ ban đầu thế này nhé.
double totalPrice = 100;
totalPrice = totalPrice > 100 ? totalPrice * 0.8 : totalPrice * 0.9;
Sau khi duyệt qua cả 2 dòng lệnh trên thì lúc này giá trị của totalPrice sẽ bằng 90

Lời kết

Chúng ta vừa tìm hiểu qua cách sử dụng if-else, switch và biểu thức tam phân trong Java. Đây là 1 phần rất quan trọng bắt buộc chúng ta phải biết sử dụng khi muốn lập trình với bất kỳ 1 ngôn ngữ nào. Thế nhưng, nó không khó và các bạn có thể gặp rất nhiều khi làm các bài tập. Chúc các bạn học tốt nhé.