Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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_String_Return_Append - Fatal编程技术网

Java 打印句子中出现的所有元音

Java 打印句子中出现的所有元音,java,string,return,append,Java,String,Return,Append,我写了一个方法,可以打印句子中的所有元音。但我的代码似乎只返回元音的一次出现。我需要返回字符串中出现的所有内容。如何使输出成为附加字符串 public String getVowels() { for (int i=0; i <MyString.str.length(); i++) { c = MyString.str.charAt(i); if ((MyString.str.charAt(i) == 'a') || (MyS

我写了一个方法,可以打印句子中的所有元音。但我的代码似乎只返回元音的一次出现。我需要返回字符串中出现的所有内容。如何使输出成为附加字符串

public String getVowels() {
    for (int i=0; i <MyString.str.length(); i++) {
        c = MyString.str.charAt(i);
        if ((MyString.str.charAt(i) == 'a') ||
            (MyString.str.charAt(i) == 'e') ||
            (MyString.str.charAt(i) == 'i') ||
            (MyString.str.charAt(i) == 'o') ||
            (MyString.str.charAt(i) == 'u')) {

            vowels = String.valueOf(c);
        }
    }
    return vowels;
}

每次都要替换元音字符串,而不是将其追加更新

试试这个:

vowels += String.valueOf(c);
整个代码如下所示:

public String getVowels() {

    String myString = "testString";

    String vowels = "";
    for (int i=0; i < myString.length();i++) {
        if((myString.charAt(i) == 'a') ||
            (myString.charAt(i) == 'e') ||
            (myString.charAt(i) == 'i') ||
            (myString.charAt(i) == 'o') ||
            (myString.charAt(i) == 'u')) {
            vowels += String.valueOf(myString.charAt(i));
        }
    }
    return vowels;
}
请注意,您只检查小写字母,而忘记了y

扰流器

这可以通过更优雅的方式完成:

public void vowelsTest() {
    System.out.println(getVowels("MY FIRST test STRING on STACK overFLOW"));
}

public Collection<Character> getVowels(final String testString) 
{
    String allVowels = "aAeEiIoOuUyY";

    Collection<Character> vowelsInString = new ArrayList<Character>();
    for (char letter : testString.toCharArray()) {
        if (allVowels.indexOf(letter) >= 0) {
            vowelsInString.add(letter);
        }
    }

    return vowelsInString;
}
如果您只需要每个元音的一个实例,那么只需将ArrayList更改为HashSet即可

哈希集的输出:

如果您只需要每个元音的一个实例,无论大小写,您都可以用add to替换该行:

这将导致:

[Y, I, e, I, o, A, o, e, O]
[e, a, o, y, i]

@Java初学者很高兴我能帮上忙。我已经用一种稍微优雅一点的解决方法编辑了我的答案——如果你想要的话,可以查看一下。此外,如果这个答案解决了你的问题,你可以接受它。y并不总是一个元音:@DavidPostill,那么你可以接受它;在我的语言中,它总是一个元音。
[e, A, o, O, Y, I]
vowelsInString.add(String.valueOf(letter).toLowerCase().charAt(0));
[e, a, o, y, i]