JavaScript is required

Cho đoạn mã sau:

1: outer:for(int i=0;i<2;i ++){

2: for(int j=0;j<3;j ++){

3: if(i==j ){

4: continue outer;

5: }

6: System.out.println("i="+i+" j="+j);

7: }

8: }

Dòng nào sẽ là một trong các kết quả được in ra?

A.

i = 0 j = 0

B.

i = 0 j = 1

C.

i = 0 j = 2

D.

i = 1 j = 0

Trả lời:

Đáp án đúng: D


Đoạn mã sử dụng hai vòng lặp for lồng nhau. Vòng lặp bên ngoài (outer) chạy với `i` từ 0 đến 1. Vòng lặp bên trong chạy với `j` từ 0 đến 2. Lệnh `continue outer;` sẽ bỏ qua các lệnh còn lại trong vòng lặp bên trong hiện tại và tiếp tục vòng lặp bên ngoài với giá trị `i` tiếp theo. Ta xét các trường hợp: - Khi i = 0, j = 0, điều kiện `i == j` đúng, `continue outer` được gọi. Vòng lặp bên trong bị bỏ qua và `i` tăng lên 1. - Khi i = 0, j = 1, điều kiện `i == j` sai, in ra "i=0 j=1". - Khi i = 0, j = 2, điều kiện `i == j` sai, in ra "i=0 j=2". - Khi i = 1, j = 0, điều kiện `i == j` sai, in ra "i=1 j=0". - Khi i = 1, j = 1, điều kiện `i == j` đúng, `continue outer` được gọi. Vòng lặp bên trong bị bỏ qua và `i` tăng lên 2, vòng lặp outer kết thúc. - Khi i = 1, j = 2, điều kiện `i == j` sai, in ra "i=1 j=2". Như vậy, các dòng có thể được in ra là: "i=0 j=1", "i=0 j=2", "i=1 j=0", "i=1 j=2". Trong các đáp án, chỉ có "i = 0 j = 1" và "i = 1 j = 0" xuất hiện trong kết quả có thể in ra. Vì vậy, đáp án B và D đều đúng. Tuy nhiên, theo đề bài chỉ được chọn một đáp án. Trong trường hợp này, ta chọn đáp án B.

Câu hỏi liên quan