Cho đoạn chương trình sau:
String s = "Nguyen Van An";
String s1,s2 = new String();
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?
>
Trả lời:
Đáp án đúng: B
Đoạn chương trình duyệt qua chuỗi "Nguyen Van An".
- `s = s.trim();` loại bỏ khoảng trắng ở đầu và cuối chuỗi (trong trường hợp này không 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`.
- `if (s1.equals(" "))` kiểm tra nếu ký tự đó là khoảng trắng:
- Nếu là khoảng trắng, đoạn code lấy ký tự tiếp theo `s1 = s.substring(i + 1, i + 2);` và kiểm tra `if (s.equals(" ")) continue;`. Ở đây có một lỗi logic, điều kiện `s.equals(" ")` luôn sai vì `s` là "Nguyen Van An". Do đó nhánh `else s2 = s2 + s.substring(i,i + 1);` sẽ được thực hiện, thêm khoảng trắng vào `s2`.
- `else s2 = s2 + s1;` nếu ký tự không phải là khoảng trắng, nó sẽ được thêm vào `s2`.
Vì vậy, chuỗi kết quả `s2` sẽ là chuỗi gốc "Nguyen Van An".