JavaScript is required

Cho đoạn chương trình sau:

String s = "Nguyen Van An";

String s1,s2;

s = s.trim();

for (int i = 0; i < s.length();i++) {

s1 = s.substring(i,i+1);

if (s1.equals(" ")) {

s1 = s.substring(i + 1,i + 2);

if (s.equals(" ")) continue;

else s2 = s2 + s.substring(i,i + 1);

} else s2 = s2 + s1;

}

System.out.print(s2);

Chương trình trên in ra kết quả là bao nhiêu?

A.

Van An

B.

Nguyen Van An

C.

An

D.

Lỗi biên dịch

Trả lời:

Đáp án đúng: D


Đoạn chương trình duyệt chuỗi "Nguyen Van An". - `s = s.trim();` loại bỏ khoảng trắng thừa ở đầu và cuối chuỗi (nếu có). - Vòng lặp `for` duyệt từng ký tự của chuỗi. - `s1 = s.substring(i, i+1);` lấy ra ký tự tại vị trí `i`. - Nếu `s1` là khoảng trắng: - `s1 = s.substring(i + 1, i + 2);` Lấy ký tự tiếp theo sau khoảng trắng (đây có vẻ là một lỗi, vì không kiểm tra `i+1` có vượt quá độ dài chuỗi không). - `if (s.equals(" ")) continue;` **Đây là lỗi sai nghiêm trọng**. Điều kiện này so sánh cả chuỗi `s` với một khoảng trắng đơn, chắc chắn điều kiện này sai, nên `continue` không bao giờ được thực thi. - `else s2 = s2 + s.substring(i,i + 1);` Cộng khoảng trắng vào `s2`. - Nếu `s1` không phải là khoảng trắng: - `s2 = s2 + s1;` Cộng ký tự vào `s2`. `s2` ban đầu là chuỗi rỗng, và sẽ được xây dựng bằng cách duyệt và thêm từng ký tự (hoặc khoảng trắng) của `s` vào. Vì điều kiện `if (s.equals(" ")) continue;` luôn sai, nên tất cả các khoảng trắng đều được giữ lại. Vậy kết quả in ra là chuỗi ban đầu: "Nguyen Van An".

Câu hỏi liên quan