此代码的目的是让它检查String
是否有元音;如果是这样,它会加倍。我无法在此作业中使用StringReplace
,StringBuilder
或.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;
}
}
答案 0 :(得分:2)
您正在使用char.equals
。 char
是基本类型,没有.equals
方法。使用==
比较字符:
if (ca == 'a')
等
答案 1 :(得分:1)
这里有一些问题......
char
类型
ca
是char
,表示它包含单个字符。你不能使它等于两个字符
//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
进行比较。您需要使用单引号('
),以便将char
与char
进行比较: -
//This is the source of "error: incomparable types"
if (ca == "a" || ca == "e" || ca =="i" || ca == "o" || ca == "u")
<强>解决方案强>
如果它是元音,您想要返回ca
或ca
两次的新字符串: -
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
的类型为ca
,char
没有意义。
答案 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;
}
代码问题:
我希望这是一个可以接受的答案。
Input: "Hello world"
Output: "Heelloo Woorld"