Cấu trúc điều khiển if
if đơn giản
Lệnh if đơn giản kiểm tra nếu điều kiện là đúng thì thi hành khối lệnh thích hợp.
if (condition) { //thi hành nếu điều kiện condition là true }
int x = 7; if(x < 42) { System.out.println("Hi"); }
Điều kiện logic nhận giá trị false, true
ví dụ như x < 42
ở trên là điều kiện kiểm tra, ta có thể sử dụng các toán tử so sánh
< | nhỏ hơn |
> | lớn hơn |
!= | khác |
== | bằng (lưu ý so sánh string sử dụng stringobject.equals() |
<= | nhỏ hơn hoặc bằng |
>= | lớn hơn hoặc bằng |
if ... else ...
Nếu điều kiện đúng thi hành khối lệnh thứ nhất, nếu sai thi hành khối lệnh sau else
import java.util.Scanner; public class Program { public static void main(String[] args) { int age; Scanner agescan = new Scanner(System.in); age= agescan.nextInt(); if (age < 16) { System.out.println("Too Young"); } else { System.out.println("Welcome!"); } } }
Câu lệnh else if
Kiểm tra nhiều điều kiện, điều kiện nào đúng thì thi hành khối lệnh tương ứng
import java.util.Scanner; public class Program { public static void main(String[] args) { int age = 25; Scanner ageScan = new Scanner(System.in); age = ageScan.nextInt(); if(age <= 0) { System.out.println("Error"); } else if(age <= 16) { System.out.println("Too Young"); } else if(age < 100) { System.out.println("Welcome!"); } else { System.out.println("Really?"); } } }
Toán tử logic && || !
Để kiểm tra nhiều điều kiện ta sử dụng toán tử và && (cả hai điều kiện đúng trả về true), toán tử hoặc || (trả về true nếu có ít nhất một điều kiện true), giúp cho việc tránh viết các lệnh if lồng nhau. Ngoài ra là toán tử phủ định ! (trả về true nếu biểu thức là false và ngược lại)
if (age > 18) { if (money > 500) { System.out.println("Welcome!"); } }
Viết lại thành
if ((age > 18) && (money > 500)) { System.out.println("Welcome!"); }
Ví dụ toán tử hoặc ||
int age = 25; int money = 100; if ((age > 18) || (money > 500)) { System.out.println("Welcome!"); } //Outputs "Welcome!"
Ví dụ toán tử phủ định !
int age = 25; if(!(age > 18)) { System.out.println("Too Young"); } else { System.out.println("Welcome"); } //Outputs "Welcome"
Lệnh switch
Lệnh switch rẽ nhánh, nó kiểm tra biến với một danh sách giá trị. Một giá trị gọi là một trường hợp case, và khối lệnh thi hành từ đó nếu điều kiện kiểm tra trên là đúng.
Cú pháp lệnh switch
switch (expression) { case value1 : //các lệnh break; //tùy chọn case value2 : //các lệnh break; //tùy chọn // ... các case khác default : //tùy chọn //Statements }
Khi chạy cấu trúc trên, expression bằng giá trị nào của trong các case thì sẽ thi hành bắt đầu từ case đó, cho đến khi gặp một break; (nếu không có break; nào thì sẽ thi hành tất cả các code từ case đó đến hết)
Nếu expression không bằng giá trị nào trong các case thì có hai trường hợp xảy ra: Nếu có khối default: thì sẽ chạy code từ đây, nếu không có default: khi không có code nào trong khối switch thi hành.
int day = 3; //int day = 6; switch(day) { case 6: System.out.println("Saturday"); break; case 7: System.out.println("Sunday"); break; default: System.out.println("Weekday"); } //Xuất "Weekday" //Nếu int day = 6; xuất: "Saturday"
Vòng lặp while
Vòng lặp while thi hành khối lệnh khi mà điều kiện kiểm tra vẫn là true
int x = 3; while(x > 0) { System.out.println(x); x--; } /* Xuất ra: 3 2 1 */
Ví dụ trên, đầu tiên kiểm tra (x > 0) nếu true sẽ thi hành khối lệnh { ... }, hết khối lệnh quay lại quá trình trên cho đến khi (x > 0) là false. Lưu ý viết vòng lặp cần chú ý nếu không sẽ rơi vào vòng lặp vô tận. Ví dụ thay x-- bằng x++ ở ví dụ trên.
Vòng lặp for
Nếu số lần lặp biết rõ, nên sử dụng vòng lặp for với cú pháp:
for (initialization; condition; increment/decrement) { //Các lệnh thi hành }
Initialization : biểu thức thi hành một lần khi bắt đầu vòng lặp
Condition : mỗi lần kiểm tra điều kiện này là true
thì khối lệnh thi hành, nếu false
sẽ thoát khỏi vòng lặp.
Increment/Decrement : thi hành mỗi lần đến cuỗi vòng lặp
for(int x = 1; x <=5; x++) { System.out.println(x); } /* Xuất ra 1 2 3 4 5 */
Ví dụ trên vòng lặp for hoạt động như sau: lần đầu gán x = 1; tiếp theo kiểm tra (x <=5) nếu sai thoát ngay khỏi vòng lặp, nếu đúng thi hành khối lệnh, đến cuỗi thi hành x++ và lại bắt đầu lại từ kiểm tra (x <= 5)
Ví dụ in các số chẵn từ 0 đến 10
for(int x=0; x<=10; x=x+2) { System.out.println(x); }
Vòng lặp do ... while
Tương tự vòng lặp while nhưng khối lệnh thi hành trước rồi mới kiểm tra điều kiện, nếu điều kiện đúng thì lặp lại. Có nghĩa là do ... while khối lệnh luôn có ít nhất một lần được thi hành
int x = 1; do { System.out.println(x); x++; } while(x < 5); /* 1 2 3 4 */
Điều khiển vòng lặp bằng break; và continue;
Bên trong khối lệnh của các vòng lặp như for, while có thể điều khiển lại vòng lặp bằng cách sử dụng các lệnh break; hoặc continue;
break; sẽ kết thúc vòng lặp ngay lập tức
int x = 1; while(x > 0) { System.out.println(x); if(x == 4) { break; } x++; } /* Xuất 1 2 3 4 */
continue; bỏ qua các lệnh phía sau của nó và đi thẳng đến điều kiện kiểm tra để lặp tiếp theo
for(int x=10; x<=40; x=x+10) { if(x == 30) { continue; } System.out.println(x); } /* Xuất ra 10 20 40 */