2014-09-05 24 views
-1

我寫了一個應該在句子中打印所有元音的方法。但似乎我的代碼只返回一個元音的出現。我需要返回一個字符串中的所有事件。如何使輸出成爲附加字符串?在句子中打印所有出現的元音

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; 
} 
+0

use StringBuilder – Eran 2014-09-05 00:17:03

+0

'List ' – 2014-09-05 00:17:11

回答

3

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

非常感謝。有用! – javabeginner 2014-09-05 00:31:02

+0

@javabeginner很高興能幫到你。我已經用一點點解決這個問題的優雅方式編輯了我的答案 - 如果需要,請檢查一下。 此外 - 如果這anwer解決了你的問題,你可以隨時接受它。 – 2014-09-05 00:40:42

+0

'y'並不總是元音:) [字母Y是元音還是輔音?](http://www.oxforddictionaries.com/words/is-the-letter-ya-vowel-or-a-輔音) – DavidPostill 2014-09-05 07:36:05