Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何仅双元音_Java - Fatal编程技术网

Java-如何仅双元音

Java-如何仅双元音,java,Java,我正在尝试编写代码,使字符串中的所有元音都加倍。因此,如果字符串是hello,它将返回heelloo。 这就是我目前拥有的: public String doubleVowel(String str) { for(int i = 0; i <= str.length() - 1; i++) { char vowel = str.charAt(i); if(vowel == 'a' || vowel == 'e' || vowel == 'i'

我正在尝试编写代码,使字符串中的所有元音都加倍。因此,如果字符串是hello,它将返回heelloo。 这就是我目前拥有的:

public String doubleVowel(String str)
{
    for(int i = 0; i <= str.length() - 1; i++)
    {
        char vowel = str.charAt(i);
        if(vowel == 'a' || vowel == 'e' || vowel == 'i' || vowel == 'o' || vowel == 'u')
        {

        }
    }
}
公共字符串双元音(String str)
{

对于(int i=0;i您需要创建一个临时的额外字符串(生成器),并向该局部变量添加两次元音,然后返回它:

public String doubleVowel(String str)
{
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i <= str.length() - 1; i++)
    {
        char vowel = str.charAt(i);
        if(vowel == 'a' || vowel == 'e' || vowel == 'i' || vowel == 'o' || vowel == 'u')
        {
           sb.append(vowel); // add it to the string
        }
        sb.append(vowel); // add any character always, vowels have been added already, resulting in double vowels
    }
    return sb.toString();
}
公共字符串双元音(String str)
{
StringBuilder sb=新的StringBuilder();
对于(int i=0;i您可以使用一个正则表达式,只需对进行一次调用,您的方法可能是
static
,因为您不需要任何实例状态(另外,不要忘记大写元音)

public static String doubleVowel(String str) {
    return str.replaceAll("([AaEeIiOoUu])", "$1$1");
}

如果
$1
()

中表示的第一个(唯一的)模式分组相匹配,那么我还要为这些好的答案添加一个不涉及regex或
StringBuilders
/long
比较的解决方案,以便您可以选择最适合您需要的解决方案

public String doubleVowel(String str)
{
    String vow = "aeiou";

    for (int i = 0; i < str.length(); i++) {

                if (vow.indexOf(str.charAt(i)) != -1) {

                    str = str.substring(0, i + 1) + str.substring(i++, str.length());
                }

    }

   return str;
}
公共字符串双元音(String str)
{
字符串vow=“aeiou”;
对于(int i=0;i
由于
String
是不可变的,因此您必须在构建输出时使用某种临时结构。
StringBuilder
就是为了这个目的而创建的。我认为您应该添加一点关于
$1
的内容,这是每个人都喜欢正则表达式的好东西,或者您可以使用
(?I)[aeiou])
。无论如何,这是一个非常好的答案:)回答很好,但你不应该给变量命名为
元音,因为当
if
语句为true时,它只是一个元音。只需给它命名为
c
ch
。请注意,尽管功能正确,但这是非常低效的,从性能上看。--此外,删除
字符()
从串联调用并将
++i
更改为
i++
。确实如此,谢谢,我很快就完成了,没有注意到。已修复。