Số là bọn em đang làm bài tập. Đề bài cụ thể là: “Viết chương trình nhận vào một chuỗi bất kì và in ra chuỗi đó sau khi đã được viết hoa chữ cái đầu tiên mỗi từ. Nếu từ bắt đầu bằng kí tự đặc biệt thì từ đó không phải viết hoa kí tự nào. Không được dùng phương thức toUpperCase() có sẵn, hãy viết (các) phương thức chính để giải quyết vấn đề trên.”
Em viết như thế này:
public static boolean isInRange(char chr) {
return ((int) chr >= 'a' && (int) chr <= 'z');
}
public static char uppercaseAChar(char chr) {
if (isInRange(chr))
return (char) (chr - 32);
return chr;
}
public static String uppercaseEachWord(String str) {
if (str == null || str.length() == 0)
return str;
StringBuilder res = new StringBuilder();
res.append(uppercaseAChar(str.charAt(0)));
for (int i = 1; i < str.length(); i++) {
if (str.charAt(i - 1) == ' ') {
res.append(uppercaseAChar(str.charAt(i)));
} else
res.append(str.charAt(i));
}
return res.toString();
}
Còn bạn em viết như thế này:
private static String inHoaCacChuDauTungTu(String s2) {
char[] arr = s2.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (i == 0 && (int) arr[i] >= 97 && (int) arr[i] <= 122) {
arr[i] = (char) ((int) arr[i] - 32);
}
if ((int) arr[i] == 32) {
if (i < arr.length - 1 && (int) arr[i + 1] >= 97 && (int) arr[i + 1] <= 122)
arr[i + 1] = (char) ((int) arr[i + 1] - 32);
if (i == arr.length - 1)
break;
}
}
String s = new String(arr);
return s;
}
Thật sự thì khi test code của nó chạy nhanh hơn của em. Nhưng em thấy code của nó nhằng nhèo sao ấy, khó đọc quá. Theo các ACE, nên chọn cách viết code nào ạ? Có phải em chia ra thành các phương thức riêng lẻ nên nó bị chậm không? Mong các ACE giải đáp giúp. Em cảm ơn nhiều ạ!!!