簡體   English   中英

將字符串中的第一個字母大寫。 我究竟做錯了什么?

[英]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;
        }
    }
  1. 您不應在循環中再次遞增i ,因為它將在循環的簽名中自動完成。

  2. 您必須將Character.toUpperCase(ch)分配給String或附加它。

  3. 我建議您在循環構建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM