您每次替換元音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