如何计算字符串中的元音?

Nic*_*tra -2 java string count

目标是计算用户输入的短语中有多少元音.用户将输入一个短语

my name is nic
Run Code Online (Sandbox Code Playgroud)

输出将是这个例子的

Vowel Count: 4
Run Code Online (Sandbox Code Playgroud)

现在这是我的代码.

    import cs1.Keyboard;
public class VowelCount {

    public static void main(String[] args) {
        System.out.println("Please enter in a sentence.");
            String phrase = Keyboard.readString();
            char[] phraseArray = phrase.toCharArray();
            char[] vowels = new char[4];
            vowels[0] = 'a';
            vowels[1] = 'e';
            vowels[2] = 'i';
            vowels[3] = 'o';
            vowels[4] = 'u';
            int vCount = countVowel(phrase, phraseArray, vowels);
            System.out.println("Vowel Count: " + vCount);
    }

    public static int countVowel(String word, char[] pArray, char[] v) {
        int vowelCount = 0;
        for (int i = 0; i < word.length(); i++) {
            if (v[i] == pArray[i])
                vowelCount++;
        }
        return vowelCount;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用我的代码我得到一个ArrayIndex错误.我知道修复但是当我改变时

for (int i = 0; i < word.length(); i++) {
Run Code Online (Sandbox Code Playgroud)

for (int i = 0; i < 5; i++) {
Run Code Online (Sandbox Code Playgroud)

它修复了错误但不计算元音.它输出

Vowel Count: 0
Run Code Online (Sandbox Code Playgroud)

那么我该如何解决这个问题呢?有没有比我尝试这样做更好的方法呢?

小智 5

只需使用正则表达式.会为你节省很多时间

int count = word.replaceAll("[^aeiouAEIOU]","").length();
Run Code Online (Sandbox Code Playgroud)

  • @NicLaQuatra是的.符号`^`表示''不' (2认同)