您每次都替换元音String,而不是更新它(追加)。
试试这个:
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;
}
输出:
ei
请注意,您只检查小写字母,而您忘记了 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;
}
这将导致:
[Y, I, e, I, o, A, o, e, O]
如果您希望每个元音只有一个实例,那么您只需将 ArrayList 更改为 HashSet,仅此而已。
HashSet 的输出:
[e, A, o, O, Y, I]
如果您只需要每个元音的一个实例,无论是大写还是小写,您都可以将该行替换为 add 为:
vowelsInString.add(String.valueOf(letter).toLowerCase().charAt(0));
这将导致:
[e, a, o, y, i]