25/05/2018, 09:42

Các cấu trúc điều khiển trong Java

Lệnh if – else Cú pháp: if (Condition) { // Các lệnh sẽ được thực hiện nếu giá trị của Condition là true} if (Condition) { // Các lệnh sẽ được thực hiện nếu giá trị của Condition là true} else { // Các ...

Lệnh if – else

Cú pháp:

if (Condition) {           // Các lệnh sẽ được thực hiện nếu giá trị của Condition là true} if (Condition) { // Các lệnh sẽ được thực hiện nếu giá trị của Condition là true} else { // Các lệnh sẽ được thực hiện nếu giá trị của Condition là false}

Ví dụ:  

Lưu chương trình sau vào tập tin IfDemo.java :

import java.io.*;public class IfDemo {     public static void main(String args[]) {         System.out.print("Vui long nhap mot ky tu:");         try {             int ch = System.in.read();             if (ch == 'A') {                 System.out.print("Ban rat may man !");             }             else {                 System.out.print("Ban khong gap may !");             }         } catch(IOException ie) {             System.out.print("Error:"+ie);          }     } }

Biên dich và thực thi có kết quả như sau:

Kết quả biên dịch chương trình IfDemo.java

Cú pháp: 

(condition) ? Operation1 : Operation2;

Nếu điều kiện condition có giá trị là true lệnh sẽ trả về giá trị của biểu thức Operation1, ngược lại sẽ trả về giá trị của biểu thức Operation2. 

Ví dụ:

Lưu chương trình sau vào tập tin QuestionOp.java :

import java.io.*; public class QuestionOp {     public static void main(String args[]) {         System.out.print("Vui long nhap mot ky tu:");         try {             int ch = System.in.read();             int point = (ch == 'A') ? 10:0;             System.out.print("Diem cua ban la:"+point);          } catch(IOException ie) {              System.out.print("Error:"+ ie);         }     } }

Biên dịch và thực thi được kết quả như sau:

Kết quả biên dịch chương trình QuestionOp.java

Cú pháp

switch ( variable ) {     case value1 : {         Task 1;          // Các tác vụ sẽ được thực thi nếu giá trị của variable là value1         break;     }    case value2 : {         Task 2;          // Các tác vụ sẽ được thực thi nếu giá trị của variable là value2         break;     }    . . .    default:         Task n;         // Tác vụ sẽ được thực thi nếu giá trị của variable không là các giá trị trên}

Ví dụ

Lưu chương trình sau vào tập tin CaseOp.java

import java.io.*; public class CaseOp {     public static void main(String args[]) {         System.out.print("Enter a number character: ");         try {             int ch = System.in.read();             switch(ch) {                 case '0': { System.out.print("Zero");break;}                 case '1': { System.out.print("One"); break;}                 case '2': { System.out.print("Two"); break;}                 case '3': { System.out.print("Three");break;}                 case '4': { System.out.print("Four"); break;}                 case '5': { System.out.print("Five"); break;}                 case '6': { System.out.print("Six"); break;}                 case '7': { System.out.print("Seven");break;}                 case '8': { System.out.print("Eight");break;}                 case '9': { System.out.print("Nine"); break;}                 default: { System.out.print("I don't know"); break;}             }         } catch(IOException ie) {             System.out.print("Error "+ie);          }     } }

Biên dịch và thực thi được kết quả sau:

Kết quả biên dịch chương trình CaseOp.java

Cú pháp

while (condition) {    // nếu condition có giá trị là true, thì các tác vụ ở đây sẽ được lặp lại}

Ví dụ

Lưu chương trình sau vào tập tin WhileDemo.java

import java.io.*; public class WhileDemo {     public static void main(String args[]) {         int num = '9';         while (num > '0') {             System.out.print((char)num +" ");             num--;         }     } }

Biên dịch và thực thi được kết quả sau:

Kết quả biên dịch chương trình WhileDemo.java

Cú pháp

    do {        // Lặp lại các tác vụ ở đây cho đến khi điều kiện condition có giá trị là false    } while (condition) 

Ví dụ: Lưu chương trình sau vào tập tin DoWhileDemo.java

import java.io.*; public class DoWhileDemo {     public static void main(String args[]) {         int num = '9';         do {             System.out.print((char)num +" ");             num--;         } while (num > '0');     } }

Biên dịch và thực thi được kết quả sau:Kết quả biên dịch chương trình DoWhileDemo.java

Cú pháp

for (operation1; condition; operation2){       // Các tác vụ được lặp lại}

          Tương đương như cấu trúc sau:

operation1;while (condition) {       // Các tác vụ được lặp lại      operation2;}

Ví dụ

Lưu chương trình sau vào tập tin ForDemo.java

import java.io.*; public class ForDemo {     public static void main(String args[]) {         for(int num = '9'; num>'0'; num --) {             System.out.print((char)num +" ");         }      } }

Biên dịch và thực thi được kết quả như sau:

Vòng lặp của các lệnh while, do-while và for sẽ kết thúc khi lệnh break được thực hiện.

Ví dụ

Lưu chương trình sau vào tập tin BreakDemo.java

import java.io.*;public class BreakDemo {    public static void main(String args[]){        int num =Integer.valueOf(args[0]).intValue();        int i= num / 2;        while(true){            if (num % i ==0) break;            i--;        }        System.out.println("So lon nhat chia het "+num+ " la: "+i);    }}

Biên dịch và thực thi được kết quả sau:

Kết quả biên dịch chương trình BreakDemo.java

Chương trình trên đổi đối số thứ nhất của nó (lưu trong args[0]) thành số ( bằng lệnh Integer.valueOf(args[0]).inValue() ) và tìm số lớn nhất chia hết số này.

Trong một lần lặp nào đó của các lệnh while, do-while và for, nếu gặp lệnh continue thì lần lặp sẽ kết thúc (bỏ qua các lệnh phía sau continue) để bắt đầu lần lặp tiếp theo.

Ví dụ: Lưu chương trình sau vào tập tin ContinueDemo.java

import java.io.*; public class ContinueDemo{     public static void main(String args[]){         int num =Integer.valueOf(args[0]).intValue();         System.out.print("The odd numbers: ");         for (int i =0; i< num; i++ ){             if (i % 2 ==0) continue;              System.out.print(i+ " ");          }     } }

Biên dịch và thực thi được kết quả sau:

Kết quả biên dịch chương trình ContinueDemo.java

Chương trình này in ra tất cả các số lẻ nhỏ hơn số đưa vào từ đối số.

Đọc đối số của chương trình

Khi thực thi chương trình ta có thể nhập vào các đối số từ dòng lệnh theo cú pháp sau:

    java ClassName arg1  arg2  arg3   argn

Các đối số cách nhau khoảng trắng. Để đón nhận các đối số này, phương thức main bắt buộc phải khai báo một tham số kiểu mảng các chuỗi 

    public static void main(String args[]) {

    }

Các đối sối số lần lượt được đặt vào các phần tử của mảng này. Số lượng đối số có thể xác định được bằng cách truy xuất thuộc tính args.length của mảng.

Ví dụ

Lưu chương trình sau vào tập tin PrintArgs.java

public class PrintArgs {      public static void main (String args[]) {         for (int i = 0; i < args.length; i++) {             System.out.println(args[i]);          }     }  } 

Biên dịch và thực thi chương trình được kết quả sau:Kết quả biên dịch chương trình PrintArgs.java

Đổi chuỗi thành số

Lưu chương trình sau vào tập tin StringToNumber.java

public class StringToNumber{      public static void main (String args[]) {         int i = Integer.valueOf( args[0]).intValue();         long l = Long.valueOf( args[1]).longValue();         float f = Float.valueOf( args[2]).floatValue();         System.out.println("Integer number = "+i );          System.out.println("Long number = "+l );          System.out.println("Float number = "+f );      }  } 

Biên dịch và thực thi chương trình được kết quả sau:

Kết quả biên dịch chương trình StringToNumber.java
0