您每次替换元音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
请注意,你只用小写检查信件你忘了和。
扰流
这可以在一个位来实现更优雅的方式:
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]
use StringBuilder – Eran 2014-09-05 00:17:03
'List' –
2014-09-05 00:17:11