【问题标题】:Capitalizing the first letter in a string. What am I doing wrong?将字符串中的第一个字母大写。我究竟做错了什么?
【发布时间】:2016-01-24 19:12:24
【问题描述】:

我做错了什么?当我运行我的程序时,它只打印我的一些字符串,并且不将第一个字母大写..

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;
    }

}

【问题讨论】:

  • 您是想只将第一个字母大写而字符串的其余部分保持不变,还是只将第一个字母大写?

标签: java string methods char


【解决方案1】:

您需要将变量 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;
        }
    }

【讨论】:

    【解决方案2】:
    1. 您不应在循环中再次增加i,因为它将在循环的签名中自动完成。

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

    3. 我建议你在循环构建字符串对象时使用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
    

    【讨论】:

      【解决方案3】:

      toLowerCase()返回一个字符串,你需要将它分配给ch。 您还需要将您的i 增加一次(在for 中,而不是在if 中)

      【讨论】:

        【解决方案4】:

        从您的capitalize(String) 方法中删除一些不必要的代码,例如i++,并使用
        s += String.valueOf(Character.toUpperCase(ch)); 代码代替

        Character.toUpperCase(ch);
        s += ch;
        

        完整的大写(字符串)方法

        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;
        }
        

        【讨论】:

          【解决方案5】:

          像这样改变你的 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-08-06
            • 1970-01-01
            • 2016-07-18
            • 2019-12-23
            • 2014-06-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多