[Tự học lập trình Java] Các câu lệnh luồng điều khiển (Control Flow Statements)

 

Các câu lệnh luồng điều khiển (Control Flow Statements)

Ngôn ngữ lập trình Java - tinhoccoban.net


Khái niệm.

Các câu lệnh bên trong các tệp nguồn nói chung được thực thi từ trên xuống dưới, các thứ tự thực hiện giống như chúng xuất hiện trong các tệp đó. Các câu lệnh điều khiển có thể dừng, phá vỡ quá trình thực thi đó, quyết định tạo, lặp và phân nhánh cho chương trình bằng điều kiện thực thi cụ thể cho khối lệnh (blocks). Trong phần này mô tả các câu lệnh tạo quyết định (if-thenif-then-elseswitch) và phân nhánh các câu lệnh (breakcontinuereturn) hỗ trợ trong ngôn ngữ lập trình Java.

Câu lệnh if-then.

Câu lệnh if-then là câu lệnh cơ bản của tất cả các câu lệnh điều khiển. Nó cho chương trình của bạn biết thực thi phần mã nguồn nào chỉ với từ if, kiểm tra các đánh giá là true. Ví dụ trong lớp Bicycle phanh giảm bớt tốc độ của xe khi nó đang chuyển động chỉ với từ if. Ví dụ thực thi bằng phương thức applyBrakes.

void applyBrakes() {
    // the "if" clause: bicycle must be moving
    if (isMoving){ 
        // the "then" clause: decrease current speed
        currentSpeed--;
    }
}

 Nếu kiểm tra có kết quả là false (nghĩa là xe không di chuyển) thì điểu khiển nhảy đến kết thúc câu lệnh if-then.


Luồng điều khiển if-then tinhoccoban.net 

Luồng hoạt động của câu lệnh if-then

Ngoài ra, mở và đóng dấu ngoặc nhọn là tùy chọn, sau đó là mệnh đề “then” gồm vào chỉ là một câu lệnh.

void applyBrakes() {
    // same as above, but without braces 
    if (isMoving)
        currentSpeed--;
}

Có thể bỏ qua dấu đóng mở ngoặc nhọn là tùy sở của người lập trình. Bỏ qua chúng có thể tạo ra mã nguồn đơn giản hơn. Nếu một lệnh thứ hai sau đó được thêm vào sau mệnh đề “then”. Một lỗi phổ biến cho người mới lập trình là quên thêm vào dấu đóng ngoặc nhọn. Từ đó trình biên dịch sẽ không thể bắt được lỗi và chương trình của bạn sẽ trả về kết quả sai.

Câu lệnh if-then-else.

Câu lệnh if-then-else cung cấp một đường thực khi mệnh đề “if” được kiểm tra giá trị là false. Bạn có thể sử dụng câu lệnh if-then-else trong phương thức applyBrakes để thêm một vài hoạt động cho phanh khi mà xe không di chuyển. Trong trường hợp này hành động đơn giản là in ra màn hình lỗi trạng thái của xe là đang dừng chuyển động.

void applyBrakes() {
    if (isMoving) {
        currentSpeed--;
    } else {
        System.err.println("The bicycle has already stopped!");
    } 
}

Trong ví dụ IfElseDemo gán các hạng học lực cho giá trị cho điểm kiểm tra: một điểm A có tỉ lệ 90% trở lên, một điểm B có tỉ lệ 80% trở lên và v.v.

class IfElseDemo {
    public static void main(String[] args) {
 
        int testscore = 76;
        char grade;
 
        if (testscore >= 90) {
            grade = 'A';
        } else if (testscore >= 80) {
            grade = 'B';
        } else if (testscore >= 70) {
            grade = 'C';
        } else if (testscore >= 60) {
            grade = 'D';
        } else {
            grade = 'F';
        }
        System.out.println("Grade = " + grade);
    }
}

Đầu ra của chương trình này là

  Grade = C

Bạn có thể nhận thấy rằng giá trị testscore có thể thỏa mãn một biểu thức trong biểu thức điều kiện: 76>=70 và 76 >=60. Tuy nhiên chỉ một điều kiện được thỏa mãn thì câu lệnh đã được thực thi (grade = 'C';) và điều kiện còn lại không được tính tới.


Luồng điều khiền if-then-else tinhoccoban.net

Luồng hoạt động của câu lệnh if-then-else

Câu lệnh switch case

Không giống các câu lệnh if-then và if-then-else, câu lệnh switch có thể thực thi số lượng đếm được các nhánh. Một switch làm việc với byte, short, char, int các kiểu dữ liệu nguyên thủy. Nó cũng làm việc với các kiểu dữ liệu liệt kê (sẽ được bàn trong kiểu Enum), lớp String, và một vài lớp đặc biệt khác tất nhiên các dữ liệu nguyên thủy: Character, Byte, Short và Interger (Được bàn trong các số và các chuỗi.)

Biểu đồ hoạt động của câu lệnh điều khiển switch case - tinhoccoban.net

Biểu đồ hoạt động của câu lệnh điều khiển switch case

Một ví dụ dưới đây, SwitchDemo khai báo một số nguyên int là month. Nhận giá trị là biểu diễn một tháng. Đoạn code hiển thị tên của một tháng, lấy giá trị biến month. Sử dụng câu lệnh điều khiển switch case.

public class SwitchDemo {
    public static void main(String[] args) {
 
        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;
        }
        System.out.println(monthString);
    }
}

 Trong trường hợp này, August được in ra ở đầu ra.

Trong phần thân của câu lệnh switch được biết đến là khối switch (switch block). Một câu lệnh trong khối switch có thể được gán nhãn với một hoặc nhiều nhãn case hoặc default. Khi tính toán giá trị biểu thức switch, việc thực thi sẽ dựa trên việc khớp giá trị đó với các nhãn case.

Bạn có thể hiện tên hiển thị của tháng với các câu lệnh if-then-else.

int month = 8;
if (month == 1) {
    System.out.println("January");
} else if (month == 2) {
    System.out.println("February");
}
...  // and so on

Quyết định sử dụng các câu lệnh if-then-else hay câu lệnh switch là dựa trên khả năng đọc biểu thức kiểm tra điều kiện. Một câu lệnh if-then-else có biểu thức điều kiện trong phạm vi giá trị nào đó, nhưng trái lại câu lệnh switch dựa trên biểu thức điều kiện là một số nguyên, giá trị liệt kê hoặc đối tượng String.

Một điểm thú vị là câu câu lệnh break. Mỗi câu lệnh break ở cuối để kết thúc câu lệnh switch. Tiếp tục luồng điều khiển với câu lệnh đầu tiên trong khối switch. Các câu lệnh break là cần thiết bởi vì không có chúng, các câu lệnh trong khối switch sẽ được chạy hết: toàn bộ các câu lệnh sau các nhãn case thỏa mãn đều được thực thi tuần tự, bất kể các biểu thức nhãn case sau đó cho đến khi gặp một câu lệnh break. Chương trình SwitchDemoFallThrough sẽ trình diễn các câu lệnh trong khối switch được thực thi hết. Chương trình này hiển thị tương ứng số nguyên month và các tháng trong một năm.

public class SwitchDemoFallThrough {
 
    public static void main(String[] args) {
        java.util.ArrayList<String> futureMonths =
            new java.util.ArrayList<String>();
 
        int month = 8;
 
        switch (month) {
            case 1:  futureMonths.add("January");
            case 2:  futureMonths.add("February");
            case 3:  futureMonths.add("March");
            case 4:  futureMonths.add("April");
            case 5:  futureMonths.add("May");
            case 6:  futureMonths.add("June");
            case 7:  futureMonths.add("July");
            case 8:  futureMonths.add("August");
            case 9:  futureMonths.add("September");
            case 10: futureMonths.add("October");
            case 11: futureMonths.add("November");
            case 12: futureMonths.add("December");
                     break;
            default: break;
        }
 
        if (futureMonths.isEmpty()) {
            System.out.println("Invalid month number");
        } else {
            for (String monthName : futureMonths) {
               System.out.println(monthName);
            }
        }
    }
}

Kết quả của chương trình này là:

August
September
October
November
December

Về kỹ thuật thì break cuối không yêu cầu bởi vì các câu lệnh sẽ được thực hiện trong lệnh switch. Sử dụng một break được khuyến khích làm thay đổi code, dễ đọc và ít bị lỗi hơn. Phần default được dùng khi tất cả các phần case khác đều không thỏa mãn.

Trong ví dụ SwitchDemo2 cho thấy một câu lệnh có thể có nhiều nhãn case. Mã nguồn ví dụ tính toán trả về ngày trong một tháng cụ thể.

class SwitchDemo2 {
    public static void main(String[] args) {
 
        int month = 2;
        int year = 2000;
        int numDays = 0;
 
        switch (month) {
            case 1: case 3: case 5:
            case 7: case 8: case 10:
            case 12:
                numDays = 31;
                break;
            case 4: case 6:
            case 9: case 11:
                numDays = 30;
                break;
            case 2:
                if (((year % 4 == 0) && 
                     !(year % 100 == 0))
                     || (year % 400 == 0))
                    numDays = 29;
                else
                    numDays = 28;
                break;
            default:
                System.out.println("Invalid month.");
                break;
        }
        System.out.println("Number of Days = "
                           + numDays);
    }
}

Sử dụng chuỗi trong câu lệnh switch.

Từ Java SE 7 trở đi, bạn có thể sự dung một đối tượng của lớp String trong biểu thức điều kiện của câu lệnh switch. Trong ví dụ StringSwitchDemo hiển thị số tháng dựa vào giá trị tên của lớp String là month:

public class StringSwitchDemo {
 
    public static int getMonthNumber(String month) {
 
        int monthNumber = 0;
 
        if (month == null) {
            return monthNumber;
        }
 
        switch (month.toLowerCase()) {
            case "january":
                monthNumber = 1;
                break;
            case "february":
                monthNumber = 2;
                break;
            case "march":
                monthNumber = 3;
                break;
            case "april":
                monthNumber = 4;
                break;
            case "may":
                monthNumber = 5;
                break;
            case "june":
                monthNumber = 6;
                break;
            case "july":
                monthNumber = 7;
                break;
            case "august":
                monthNumber = 8;
                break;
            case "september":
                monthNumber = 9;
                break;
            case "october":
                monthNumber = 10;
                break;
            case "november":
                monthNumber = 11;
                break;
            case "december":
                monthNumber = 12;
                break;
            default: 
                monthNumber = 0;
                break;
        }
 
        return monthNumber;
    }
 
    public static void main(String[] args) {
 
        String month = "August";
 
        int returnedMonthNumber =
            StringSwitchDemo.getMonthNumber(month);
 
        if (returnedMonthNumber == 0) {
            System.out.println("Invalid month");
        } else {
            System.out.println(returnedMonthNumber);
        }
    }
}

Đầu ra của mã nguồn này là 8.

Đối tượng String trong biểu thức switch được so sánh với giá trị trong mỗi nhãn case giống như phương thức String.equals đã được sử dụng. Thứ tự trong ví dụ StringSwitchDemo được chấp nhận bất kể trường hợp này, chuỗi month được chuyển đổi sang chuỗi viết thường (với phương thức toLowerCase) và tất cả các chuỗi liên kết trong các nhãn case đều sẽ viết thường.

Chú ý: Ví dụ này kiểm tra nếu biểu thức trong câu lệnh switch là null.Hãy chắc chắn không có biểu thưc nào trong câu lệnh switch là null vì nó sẽ ném lỗi vào lớp NullPointerException.

Câu lệnh while và do-while

Câu lệnh while thực thi một khối các câu lệnh trong khi điều kiện là true. Nó có cú pháp như sau:

while (expression) {
     statement(s)}


Sơ đồ hoạt động của câu lệnh while - tinhoccoban.net
Sơ đồ hoạt động của câu lệnh while

Câu lệnh while tính toán biểu thức, biểu thức này phải trả về một giá trị kiểu boolean. Nếu biểu thức tính toán ra giá trị true, câu lệnh while thực thi các câu lệnh nằm trong khối lệnh while. Tiếp tục kiểm tra biểu thức và thực hiện khối lệnh đó cho đến khi biểu thức điều kiện trả về giá trị false. Sử dụng câu lệnh while để in ra giá trị từ 1 đến 10, trong ví dụ  WhileDemo sau:

class WhileDemo {
    public static void main(String[] args){
        int count = 1;
        while (count < 11) {
            System.out.println("Count is: " + count);
            count++;
        }
    }
}

Bạn có thể thực thi một vòng lặp vô hạn sử dụng câu lệnh while như sau:

while (true){
    // your code goes here
}

Ngôn ngữ lập trình Java cũng cung cấp một câu lệnh do-while, được thể hiện như sau:

do {
     statement(s)
} while (expression);

 


Sơ đồ hoạt động của câu lệnh do-while - tinhoccoban.net


Sơ đồ hoạt động của câu lệnh do-while


Sự khác nhau giữa do-whilewhile đó là đánh giá biểu thức điều kiện ở đầu vòng lặp. Trái lại câu lệnh được thực thi trong khối do luôn thực hiện ít nhất một lần, điều này thể hiện trong ví dụ DoWhileDemo sau:

class DoWhileDemo {
    public static void main(String[] args){
        int count = 1;
        do {
            System.out.println("Count is: " + count);
            count++;
        } while (count < 11);
    }
}

Câu lệnh for

Câu lệnh for cung cấp một cách gọn nhẹ để lặp trong một phạm vi giá trị. Lập trình viên thường gọi là vòng lặp for bởi vì cách lặp đi lặp lại cho đến khi điều kiện cụ thể được thỏa mãn.


Sơ đồ hoạt động lệnh for - tinhoccoban.net

Sơ đồ hoạt động của câu lệnh for.

Cú pháp chung của câu lệnh này như sau:

for (initialization; termination;increment) {
    statement(s)
}

Khi sử dụng phiên bản của vòng for này cần lưu ý:

·        Biểu thức khởi tạo initialization khởi đầu vòng lặp; nó thực thi một lần, giống như bắt đầu vòng lặp.

·        Khi biểu thức kết thúc termination tính ra giá trị false, vòng lặp kết thúc.

·        Biểu thức thay đổi increment là cần thiết sau mỗi lần thực hiện lặp, nó làm cho biểu thức điều kiện tăng hoặc giảm giá trị.

Trong ví dụ ForDemo sử dụng hình thức câu lệnh for để in ra các số từ 1 đến 10.

class ForDemo {
    public static void main(String[] args){
         for(int i=1; i<11; i++){
              System.out.println("Count is: " + i);
         }
    }
}

Kết quả của chương trình này là:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

Ghi nhớ làm thế nào khai báo biến trong mã nguồn cho biểu thức khởi tạo điều kiện. Phạm vi của biến được khai báo đến hết khối mà câu lệnh for quản lý, do vậy nó có thể được sử dụng trong biểu thức kết thúc (termination) và biểu thức thay đổi giá trị (increment). Nếu biến điều khiển câu lệnh for không cần thiết bên ngoài vòng lặp thì tốt nhất bạn nên khai báo trong biểu thức khởi tạo (initialization). Các tên như i,j,k thường được dùng là biến điều khiển vòng lặp; khai báo chúng trong biểu thức khởi tạo sẽ hạn chế vòng đời của biến đó và hạn chế được các lỗi.

Ba biểu thức điều kiện trong vòng lặp for là tùy chọn; một vòng lặp vô hạn được tạo ra như sau:

// infinite loop
for ( ; ; ) {
    
    // your code goes here
}

Câu lệnh for và các hình thức lặp khác thường được dùng trong kiểu Collections và kiểu mảng (arrays). Hình thức này được giới thiệu như câu lệnh for nâng cao (enhanced for), và có thể được sử dụng để tạo ra các vòng lặp của bạn gọn hơn và dễ đọc hơn. Để chứng tỏ điều này ta xem mảng có 10 phần tử như sau:

int[] numbers = {1,2,3,4,5,6,7,8,9,10};

Chương trình EnhancedForDemo sử dụng vòng for đó như sau:

class EnhancedForDemo {
    public static void main(String[] args){
         int[] numbers = 
             {1,2,3,4,5,6,7,8,9,10};
         for (int item : numbers) {
             System.out.println("Count is: " + item);
         }
    }
}

Trong ví dụ này, biến item lưu trữ giá trị hiện của mảng numbers. Đầu ra của chương trình như sau:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10

Người ta khuyên nên sử dụng hình thức này bất cứ khi nào có thể để thay thế các hình thức for chung.

Các câu lệnh phân nhánh chương trình.

Câu lệnh break.

Câu lệnh break có hai hình thức: gán nhãn và không gán nhãn. Bạn thấy hình thức không án nhãn trong phần đã bàn ở trước của câu lệnh switch. Bạn có thể sử dụng break không gán nhãn để kết thúc một câu lệnh lặp for, while hoặc do-while như trong ví dụ BreakDemo sau:

class BreakDemo {
    public static void main(String[] args) {
 
        int[] arrayOfInts = 
            { 32, 87, 3, 589,
              12, 1076, 2000,
              8, 622, 127 };
        int searchfor = 12;
 
        int i;
        boolean foundIt = false;
 
        for (i = 0; i < arrayOfInts.length; i++) {
            if (arrayOfInts[i] == searchfor) {
                foundIt = true;
                break;
            }
        }
 
        if (foundIt) {
            System.out.println("Found " + searchfor + " at index " + i);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

Trong chương trình tìm thấy số 12 trong mảng. Câu lệnh break sẽ kết thúc vòng lặp for khi giá trị được tìm thấy. Luồng điều khiển sẽ chuyển đến câu lệnh ngay sau vòng lặp for. Chương trình này có kết quả đầu ra là:

Found 12 at index 4

Một câu lệnh break không gán nhãn kết thúc trong cùng câu lệnh switch, for, while, hoặc do-while. Nhưng câu lệnh break gán nhãn kết thúc ra ngoài câu lệnh đó. Chương ví dụ BreakWithLabelDemo là tương đương với chương trình trước, nhưng sử dụng for lồng để tìm một giá trị trong mảng hai chiều. Khi tìm thấy, một câu lệnh break gán nhãn sẽ kết thúc ra ngoài vòng lặp (nhãn “search”).

class BreakWithLabelDemo {
    public static void main(String[] args) {
 
        int[][] arrayOfInts = { 
            { 32, 87, 3, 589 },
            { 12, 1076, 2000, 8 },
            { 622, 127, 77, 955 }
        };
        int searchfor = 12;
 
        int i;
        int j = 0;
        boolean foundIt = false;
 
    search:
        for (i = 0; i < arrayOfInts.length; i++) {
            for (j = 0; j < arrayOfInts[i].length;
                 j++) {
                if (arrayOfInts[i][j] == searchfor) {
                    foundIt = true;
                    break search;
                }
            }
        }
 
        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

Kết quả của chương trình này là:

Found 12 at 1, 0

 Câu lệnh break kết một nhãn lệnh; nó không chuyển đến luồng điều khiển của nhãn. Luồng điều khiển chuyền ngay lập tức đến ngay sau câu lệnh được gán nhãn.

Câu lệnh continue.

Câu lệnh continue bỏ qua vòng lặp hiện tại của các câu lệnh lặp for, while hoặc do-while. Hình thức không gán nhãn nhẩy đến cuối thân vòng lặp và tính toán giá trị biểu thức điều kiện (boolean) để điểu khiển vòng lặp. Ví dụ ContinueDemo nhảy đến một biến String, đếm số lần xuất hiện của ký tự “p”. Nếu ký tự hiện tại không là p, câu lệnh continue sẽ bỏ quaphaanf còn lại của vòng lặp và chuyển sang ký tự tiếp theo. Nếu nó là “p” chương trình sẽ tăng đếm ký tự.

class ContinueDemo {
    public static void main(String[] args) {
 
        String searchMe = "peter piper picked a " + "peck of pickled peppers";
        int max = searchMe.length();
        int numPs = 0;
 
        for (int i = 0; i < max; i++) {
            // interested only in p's
            if (searchMe.charAt(i) != 'p')
                continue;
 
            // process p's
            numPs++;
        }
        System.out.println("Found " + numPs + " p's in the string.");
    }
}

Ở đây, đầu ra của chương trình là:

Found 9 p's in the string.

Để rõ ràng hơn về cách ử dụng này, thử bỏ câu lệnh continue đi và biên dịch lại. Khi đó chương trình sẽ cạy lại, đếm sẽ sai, và nó nói là tìm thấy 35 chữ p thay vì 9.

Một câu lệnh nhãn continue bỏ qua vòng lặp hiện tại thoát ra vị trí đánh dấu nhãn. Chương trình ContinueWithLabelDemo sử dụng vòng lặp lồng để tìm chuỗi con trong một chuỗi khác. Hai vòng lặp yêu cầu: một vòng lặp chạy qua chuỗi con và một vòng lặp chạy qua xâu tìm kiếm. Chương trình ContinueWithLabelDemo sử dụng hình thức continue gán nhãn để nhảy khỏi vòng lặp con ra vòng lặp bên ngoài.

class ContinueWithLabelDemo {
    public static void main(String[] args) {
 
        String searchMe = "Look for a substring in me";
        String substring = "sub";
        boolean foundIt = false;
 
        int max = searchMe.length() - 
                  substring.length();
 
    test:
        for (int i = 0; i <= max; i++) {
            int n = substring.length();
            int j = i;
            int k = 0;
            while (n-- != 0) {
                if (searchMe.charAt(j++) != substring.charAt(k++)) {
                    continue test;
                }
            }
            foundIt = true;
                break test;
        }
        System.out.println(foundIt ? "Found it" : "Didn't find it");
    }
}

Kết quả của chương trình này là:

Found it

Cuối cùng của các câu lệnh tạo nhánh là câu lệnh return. Câu lệnh return tồn tại trong phương thức hiện tại, và điều khiển rả lại nơi mà phương thức đã được gọi. Câu lệnh return có hai hình thức: trả về một giá trị và không trả về giá trị. Trả về một giá trị, đơn giản là đặt giá trị (hoặc một biểu thức tính toán ra giá trị) sau từ khóa return.

return ++count;

Kiểu dữ liệu được trả về phải khớp với kiểu khai báo giá trị trả về của phương thức. Khi một phương thức khai báo void, hình thức sử dụng của return đó là không trả về một giá trị.

return;

Trong phần lớp và đối tượng chúng ta sẽ tìm hiểu rõ hơn về cách viết phương thức.

Tổng kết về các câu lệnh luồng điều khiền

Câu lệnh điều khienr if-then khá cơ bản trong tất cả các câu lệnh luồng điều khiển. Nó nói với chương trình thực thi một phần code chỉ khi kiểm biểu thức điều kiện if có giá trị true. Câu lệnh if-then-else cung cấp nhánh thức hai được thực thi khi mệnh đề if là false. Khác với if-thenif-then-else, câu lệnh switch cho phép một số đường được thực thi. Câu lệnh while và do-while tiếp tục thức thi khối lệnh while trong khi điều kiện là true. Sự khác nhau giữa do-while và while đó là do-while tính toán biểu thức điều kiện ở cuối vòng lặp thay vì đầu vòng lặp. Vì vậy, câu lệnh sẽ điều khiển thực hiện câu lệnh nằm trong khối do ít nhất một lần. Câu lệnh for cung cấp một cách gọn nhẹ hơn lặp trong phạm vi giá trị. Nó có hai hình thức, một là được thiết kế cho collection và mảng.

Bài tập về các câu lệnh luồng điều khiển.

Bài tập 1 Câu lệnh luồng điều khiển cơ bản hỗ trợ trong lập trình Java là gì?

Bài tâp 2 Xem xét đoạn code sau:

if (aNumber >= 0)
    if (aNumber == 0)
        System.out.println("first string");
else System.out.println("second string");
System.out.println("third string");

-         Đầu ra của chương trình là gì nếu aNumber là 3.

-         Viết một chương trình kiểm tra nội dung chương trình với aNumber là 3. Đầu ra khi chạy chương trình là gì? Dự đoán của bạn? Giải thích tại sao đầu ra lại như vậy. Trong trường khợp khác. Mô tả luồng điều khiển trong chương trình.

-         Sử dụng dấu cách và ngắt đoạn để cho đoạn mã nguồn đó dễ đọc và dễ hiểu hơn.

-         Sử dụng dấu ngoặc nhọn để code tường minh hơn.


Mới hơn Cũ hơn

Biểu mẫu liên hệ