用字母交替产生句子以防万一

时间:2019-06-30 11:26:28

标签: java

我在Java中实现了一个程序,该程序允许通过以下方式生成此继承:

输入:

Hello World

共鸣

连续的链:

你好世界

GOOD VIBRE

尝试执行以下操作:将String输入转换为具有拆分的数组类型字符串,然后使用if进行检查偶数位置,并将该小写位置和奇数位置的字母相同,只是将其转换为大写字母...问题是数组还保存了空格,这会导致序列出现滞后,并且我无法删除它,因为我必须以inputtext格式显示文本,我该怎么办?在不改变空格和换行符的情况下完成继承?

程序给我:

你好世界

GoOd版本

代码:

public String cambiar(String cadena1)
{
cambiar= cadena1.split("");

for(int i=0; i<cambiar.length; i++)
{
    if(i%2==0)
    {
        cambiar[i]=cambiar[i].toLowerCase();
    }
    else
    {
        cambiar[i]=cambiar[i].toUpperCase();
    }
}
 for(int i=0; i<cambiar.length; i++)
{
    textocambiado+=cambiar[i];

}

return textocambiado;
   }

注意:我不允许使用arraylist

问题:https://drive.google.com/open?id=15VOlyhGtyvZ_0vcFype2o1sjiKkj7Hzn

1 个答案:

答案 0 :(得分:1)

您有一个正确的主意,只需要跳过非字母计数器的增加即可。

您可以考虑另外两项性能改进:

  • 使用StringBuilder代替串联字符串
  • 使用boolean来回翻转而不是检查计数器i是奇数还是偶数:

public String cambiar(String input) {
    boolean isLower = true;
    StringBuilder result = new StringBuilder(input.length());
    for (int i = 0; i < input.length(); ++i) {
        char ch = input.charAt(i);
        if (Character.isLetter(ch)) {
            if (isLower) {
                result.append(Character.toLowerCase(ch));
            } else {
                result.append(Character.toUpperCase(ch));
            }
            isLower = !isLower;
        } else {
            result.append(ch);
        }
    }

    return result.toString();
}