如何正确格式化此代码?

时间:2016-11-12 01:41:17

标签: java string

此代码的目的是让它检查String是否有元音;如果是这样,它会加倍。我无法在此作业中使用StringReplaceStringBuilder或.append。我运行此代码时收到错误。有人可以在我的语法中指出错误。

public String doubleVowels(String str) 
{
for (int i = 0; i < str.length(); i++)
    {
        char ca = str.charAt(i);
        if (ca == "a" || ca == "e" || ca =="i" || ca == "o" || ca == "u")
        {
            ca = str.charAt(i) + str.charAt(i);
            ca = Character.toString(ca);
        }
        return str;
     }
}

4 个答案:

答案 0 :(得分:2)

您正在使用char.equalschar是基本类型,没有.equals方法。使用==比较字符:

if (ca == 'a')

答案 1 :(得分:1)

这里有一些问题......

char类型

cachar,表示它包含单个字符。你不能使它等于两个字符

//a char plus a char is a char, not two chars (which is a String)
ca = str.charAt(i) + str.charAt(i);

您无法在String

中存储char
//You are creating a String and trying to store it in ca, a char
ca = Character.toString(ca);

方法参数和返回值

您正在返回传递给您的方法的str而未对其进行修改,并且您在第一个字符经过测试后正在执行此操作(因为它在循环中逐步执行str : -

//The String returned will always be the same as the one passed in
return str;

Java引用

最后,您使用双引号("),这意味着String并尝试将其与char进行比较。您需要使用单引号('),以便将charchar进行比较: -

//This is the source of "error: incomparable types"
if (ca == "a" || ca == "e" || ca =="i" || ca == "o" || ca == "u")

<强>解决方案

如果它是元音,您想要返回caca两次的新字符串: -

String newString = "" + ca; //ca added once
if (ca == 'a' || ca == 'e' || ca =='i' || ca == 'o' || ca == 'u')
   newString += ca; //ca added again if it's a vowel

您还希望将此新String附加到完整的String循环周期,然后在所有循环之后将其返回: -

String changedString = "";
for (int i = 0; i < str.length(); i++)
{
  //the above code
  changedString += newString;
}
return changedString;

答案 2 :(得分:0)

%.10d的类型为cachar没有意义。

答案 3 :(得分:-1)

您的代码在代码生效后几乎没有错误

public static String doubleVowels(String str) 
{
    for (int i = 0; i < str.length(); i++)
    {
        char ca = str.charAt(i);
        if (ca == 'a' || ca == 'e' || ca =='i' || ca == 'o' || ca == 'u' ||
        ca == 'A' || ca == 'E' || ca =='I' || ca == 'O' || ca == 'U')
        {
            str = (str.substring(0,i)+ca+ca+str.substring(i+1));
            i++;
        }
    }
    return str;
}

代码问题:

  • 你在for循环中返回代码。
  • 你完全迷失了元音的两倍。我正在使用子字符串,直到你所在的字符,然后添加双字符,然后附加剩余的子字符串。
  • 之后我增加了索引,因为我修改了字符串,下一个字符是相同的字符。
  • 迭代完所有字符后,我将返回字符串。

我希望这是一个可以接受的答案。

Input: "Hello world"

Output: "Heelloo Woorld"