目标是计算用户输入的短语中有多少元音。 用户将输入一个
的短语my name is nic
此示例的输出是
Vowel Count: 4
现在这是我的代码。
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;
}
}
使用我的代码我得到一个ArrayIndex错误。我知道修复但是当我改变
时for (int i = 0; i < word.length(); i++) {
到
for (int i = 0; i < 5; i++) {
它修复了错误但不计算元音。它输出
Vowel Count: 0
那么我该如何解决这个问题呢?有没有比我尝试这样做更好的方法呢?
答案 0 :(得分:5)
只需使用正则表达式。会为你节省很多时间
int count = word.replaceAll("[^aeiouAEIOU]","").length();
答案 1 :(得分:3)
您正试图以四个元音阵列存储五个元音;
char[] vowels = new char[5]; // not 4.
vowels[0] = 'a'; // 1
vowels[1] = 'e'; // 2
vowels[2] = 'i'; // 3
vowels[3] = 'o'; // 4
vowels[4] = 'u'; // 5
或者,
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
此外,请不要忘记致电toLowerCase()
,否则您只会计算小写元音。
最后,您应该循环遍历pArray
和每个vowel
中的每个字符。我会使用两个for-each
loops之类的
for (char ch : pArray) {
for (vowel : v) {
if (ch == v) vowelCount++;
}
}