【问题标题】:Return a string that has been created in a for loop返回在 for 循环中创建的字符串
【发布时间】:2019-02-20 13:59:35
【问题描述】:

目标是创建一个不存在的 String toUppercase 方法。我得到了大部分代码,但是如何返回在 for 循环中创建的字符串?

public String toUpperCase(String str)
{
    for (int i = 0; i > str.length; i++){
        char a = str.charAt(i);
        char b = Character.toUpperCase(a);
        String t = Character.toString(b);
    }
    return t;
}

【问题讨论】:

  • 目标是创建一个不存在的 String toUppercase 方法。 -- 如果不存在什么?

标签: java for-loop return


【解决方案1】:

你要写这个函数吗?

public String toUpperCase(String str)
{
    String t = "";

    for (int i = 0; i < str.length(); i++){
        char a = str.charAt(i);
        char b = Character.toUpperCase(a);
        t = t + Character.toString(b);
    }

    return t;
}

一个简单的:

str.toUpperCase() 

还不够吗?

【讨论】:

    【解决方案2】:

    您需要将您的 累加器 (t) 移出循环并用空值对其进行初始化。但是,我将从创建方法 static 开始(因为它不使用任何实例数据)。接下来,我更喜欢StringBuilder 作为我的累加器。我会使用String.toCharArray(),所以我可以使用增强的 for-each 循环。喜欢,

    public static String toUpperCase(String str) {
        StringBuilder sb = new StringBuilder();
        for (char ch : str.toCharArray()) {
            sb.append(Character.toUpperCase(ch));
        }
        return sb.toString();
    }
    

    【讨论】:

    • 如果你展示这种方式是为了提高效率,值得一提的是,你可以通过直接在toCharArray() 中的char[] 上进行操作,然后在结尾。 (至少,预先确定字符串生成器的大小)。
    【解决方案3】:

    在循环外声明t,并在循环内用+= 赋值。

    public String toUpperCase(String str)
        {
            String t = "";
            for (int i = 0; i < str.length(); i++){
                char a = str.charAt(i);
                char b = Character.toUpperCase(a);
                t += Character.toString(b);
            }
            return t;
        }
    

    如果这种方法不存在,你会这样做。下一步将是处理性能和堆影响可能是使用StringBuilder。但是所有这些基本操作都已经在java.lang.String 中提供了,为什么要重新发明轮子呢?

    【讨论】:

      【解决方案4】:

      您必须在循环外创建一个空字符串,然后使用+= 将字符附加到它

      例子:

      public String toUpperCase (String str) {
        String res = "";
        for (int i = 0; i < str.length(); i++) {
          char a = str.charAt(i);
          char b = Character.toUpperCase(a);
          res += Character.toString(b);
        }
        return res;
      }
      

      【讨论】:

        猜你喜欢
        • 2020-03-30
        • 2019-07-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-21
        • 1970-01-01
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多