将字符串中的第一个字母大写.我究竟做错了什么?

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)

JJF*_*JJF 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)


Yas*_*jaj 5

  1. 您不应该i在循环中再次递增,因为它将在循环的签名中自动完成.

  2. 你必须分配Character.toUpperCase(ch)String或追加它.

  3. 我建议你使用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)