我做错了什么?当我运行我的程序时,它只打印我的一些字符串,并且它不会将第一个字母大写。
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;
}
}
答案 0 :(得分:5)
您需要将变量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;
}
}
答案 1 :(得分:5)
你不应该在循环中再次增加i
,因为它将在循环的签名中自动完成。
您必须将Character.toUpperCase(ch)
分配给String
或附加。
我建议您在循环时使用StringBuilder
来构建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();
}
<强>输出强>
Halooloo
答案 2 :(得分:2)
从capitalize(String)
方法中移除一些不必要的代码,例如i++
并使用
s += String.valueOf(Character.toUpperCase(ch));
代码代替
Character.toUpperCase(ch);
s += ch;
完成大写(String)方法
private static 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)) {
s += String.valueOf(Character.toUpperCase(ch));
} else {
s += String.valueOf(Character.toLowerCase(ch));
}
}
println(s);
return s;
}
答案 3 :(得分:1)
toLowerCase()返回一个字符串,您需要将其分配给ch
。
您还需要将i
只增加一次(for
,而不是if
)
答案 4 :(得分:0)
像这样更改你的大写(String str)方法 -
HalOOlOO
输出:
:checked