Java - Hãy chọn đáp án đúng của đoạn chương trình cho sẵn dưới đây và giải thích.

Bài tập này yêu cầu chúng ta hãy chọn đáp án thế hiện kết quả đúng của đoạn chương trình cho sẵn dưới đây, giải thích vì sao có kết quả đó và sử dụng Eclipse để kiểm chứng.

Output.java
package baitap;

class Output {
	final static short i = 2;
    
	public static void main(String [] args) {
		for (int k = 0; k < 3; k++) {
			switch (k) {
				case i : System.out.print(" 1 ");
				case i - 1 : System.out.print(" 2 ");
				default : System.out.print(" 0 ");
			}
		}
	}
}

A 012
B 012020
C 210100
D 020120

Bài giải

-------------------- ######## --------------------

Đáp án: D. 020120

Giải thích: Trong chương trình trên, tôi tạo 1 biến tĩnh i với giá trị khởi tạo = 2.

Bước 1: Duyệt vòng lặp for với k = 0 < 3 (đúng) nên switch(k) được thực thi, lúc này k = 0 nên câu lệnh bên trong default sẽ được thực thi nên số 0 sẽ được hiển thị ra màn hình (vì không có case nào ứng với k = 0 nên câu lệnh bên trong default sẽ được thực thi).

Bước 2: k tăng lên 1 = 1 < 3 (đúng) nên switch(k) được thực thi, lúc này k = 1 nên câu lệnh bên trong case 1 (i - 1) sẽ được thực thi nên số 2 sẽ được hiển thị ra màn hình nối tiếp vào số 0, và vì không có lệnh break nên trường hợp default sẽ được thực thi nên số 0 sẽ được hiển thị nối tiếp vào số 2.

Bước 3: k tăng lên 1 = 2 < 3 (đúng) nên switch(k) được thực thi, lúc này k = 2 nên câu lệnh bên trong case 2 (i) sẽ được thực thi nên số 1 sẽ được hiển thị ra màn hình nối tiếp vào số 0 bên trên. Tương tự, vì không có lệnh break nên 2 số 2 và 0 sẽ được hiển thị. 

Kết quả cuối cùng chúng ta sẽ có dãy 020120 được hiển thị ra màn hình.

Kết quả biên dịch chương trình bằng Eclipse:

Nguồn: freetuts.net