여러분이 이것을 해결할 수 있는지 확인하십시오. 필자는 Java에서 title caps 프로그램을 작성했습니다.이 프로그램은 ASCII 문자 열을 가져 와서 모든 단어 (A-Z 또는 a-z 문자로만 구성된 하위 문자열)를 대문자로 사용할 수있는 프로그램입니다. 따라서 "# @hello! _world $"문자열은 "# @Hello! _World $"이됩니다. 그러나이 프로그램은 그것을 교정하기위한 최선의 노력에도 불구하고 문자열의 첫 번째 색인에서 비 문자를 올바르게 번역하는 것을 거부합니다. if (i == 0 && (!isUpperCase(str.charAt(i)))) {
- 그것이 소문자의 가정TitleCaps 프로그램은 문자열의 첫 번째 문자를 올바르게 변환하지 않습니다 (이유는 무엇입니까?)
public static String LetterCapitalize(String str) {
String newStr = "";
System.out.println(newStr);
for (int i = 0; i < str.length(); i++) {
// if first character is a letter and not uppercase
if (i == 0 && (!isUpperCase(str.charAt(i)))) {
Character m = (char) ((int) str.charAt(i) - 32);
newStr = newStr + m;
} // if first character is a letter and uppercase
else if (i == 0 && (isUpperCase(str.charAt(i)))) {
Character m = str.charAt(i);
newStr = newStr + m;
} // if first character is not a letter
else if (i == 0 && (!isLetter(str.charAt(i)))) {
Character m = str.charAt(i);
newStr = newStr + m + m;
} // if character is first letter in a word
else if (!isLetter(str.charAt(i - 1)) && isLetter(str.charAt(i)) && !isUpperCase(str.charAt(i))) {
Character m = (char) ((int) str.charAt(i) - 32);
newStr = newStr + m;
} // all other
else {
Character m = str.charAt(i);
newStr = newStr + m;
}
}
return newStr;
}
public static boolean isUpperCase(char c) {
boolean isCap;
if (c >= 'A' && c <= 'Z') {
isCap = true;
} else {
isCap = false;
}
return isCap;
}
public static boolean isLetter(char c) {
boolean isLetter;
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
isLetter = true;
} else {
isLetter = false;
}
return isLetter;
}
입력의 예와 출력으로 얻고 자하는 결과 및 실제로 얻는 것 (잘못된 것)을 제공 할 수 있습니까? –
위의 예에서 "# @ Hello! _World $"를 반환 할 것으로 예상하여 "# @ hello! _world $"를 입력합니다. 그러나 실제로이 프로그램은 "□ @ Hello! _World $"를 반환합니다. 분명히 이것은 출력 문자열에 대한 잘못된 첫 번째 문자입니다. –
이 줄이 잘못되었습니다. if (i == 0 && (! isUpperCase (str.charAt (i)))) {- 소문자로 가정합니다. 소문자인지 확인해야합니다. 대문자가 아닌 모든 문자가 글자는 아닙니다. –