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

时间:2015-10-25 17:57:22

标签: 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;
    }

}

5 个答案:

答案 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)

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

  2. 您必须将Character.toUpperCase(ch)分配给String或附加。

  3. 我建议您在循环时使用StringBuilder来构建String对象

  4. <强>校正

    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