[英]Capitalizing the first letter in a string. What am I doing wrong?
我究竟做錯了什么? 當我運行程序時,它只會打印一些字符串,而不會大寫第一個字母。
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;
}
}
您需要將變量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;
}
}
您不應在循環中再次遞增i
,因為它將在循環的簽名中自動完成。
您必須將Character.toUpperCase(ch)
分配給String
或附加它。
我建議您在循環構建String對象時使用StringBuilder
更正
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
從您的capitalize(String)
方法(例如i++
capitalize(String)
刪除一些不必要的代碼,然后使用
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;
}
toLowerCase()返回一個字符串,您需要將其分配給ch
。 您還需要僅將i
遞增一次(在for
,而不在if
)
像這樣更改您的capitalize(String str)方法-
private static String capitalize(String str) {
char[] chars = str.toCharArray();
String caps = chars[0]+"";
caps = caps.toUpperCase();
String output = caps;
for(int i=1;i<chars.length;i++) {
output = output + chars[i];
}
return output;
}
輸出:
HalOOlOO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.