Ale*_*207 1 java string methods char
我究竟做错了什么?当我运行我的程序时,它只打印我的一些字符串,并且它不会将第一个字母大写.
public class StringTraining extends ConsoleProgram {
public void run() {
String str = "halOOlOO";
capitalize(str);
}
private String capitalize(String str){
String s = "";
char ch;
for(int i = 0;i<str.length();i++) {
ch = str.charAt(i);
if(i==0 && Character.isLowerCase(ch)) {
Character.toUpperCase(ch);
s += ch;
i++;
} else {
Character.toLowerCase(ch);
s += ch;
i++;
}
}
println(s);
return s;
}
}
Run Code Online (Sandbox Code Playgroud)
您需要将变量ch分配给大写或小写值:
for(int i = 0;i<str.length();i++) {
ch = str.charAt(i);
if(i==0 && Character.isLowerCase(ch)) {
ch = Character.toUpperCase(ch);
s += ch;
} else {
ch = Character.toLowerCase(ch);
s += ch;
}
}
Run Code Online (Sandbox Code Playgroud)
您不应该i在循环中再次递增,因为它将在循环的签名中自动完成.
你必须分配Character.toUpperCase(ch)到String或追加它.
我建议你使用StringBuilderwhen循环来构建一个String对象
更正
private static String capitalize(String str){
StringBuilder s = new StringBuilder();
char ch;
for(int i = 0;i<str.length();i++) {
ch = str.charAt(i);
if(i==0 && Character.isLowerCase(ch)) {
s.append(Character.toUpperCase(ch));
} else {
s.append(Character.toLowerCase(ch));
}
}
return s.toString();
}
Run Code Online (Sandbox Code Playgroud)
产量
Halooloo
Run Code Online (Sandbox Code Playgroud)