2014-09-05 50 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