【发布时间】:2015-12-11 22:31:17
【问题描述】:
下面的代码应该根据以下原则计算字符串中的音节:
- 应将单个元音或一组元音计为一个音节。
- 如果一个单独的“e”位于字符串的末尾,并且字符串的其余部分有更多元音,则“e”不是一个音节。
- 如果一个单独的“e”在结尾,并且“e”旁边有一个或多个元音,并且字符串的其余部分也有更多元音,则“e”是一个音节。
我的代码执行前两条规则,但没有执行最后一条。有人可以帮助我修改此代码以同时满足第三条规则吗?
protected int countSyllables(String word) {
String input = word.toLowerCase();
int syl = 0;
boolean vowel = false;
int length = word.length();
//check each word for vowels (don't count more than one vowel in a row)
for(int i=0; i<length; i++) {
if (isVowel(input.charAt(i)) && (vowel==false)) {
vowel = true;
syl++;
} else if (isVowel(input.charAt(i)) && (vowel==true)) {
vowel = true;
} else {
vowel = false;
}
}
char tempChar = input.charAt(input.length()-1);
//check for 'e' at the end, as long as not a word w/ one syllable
if ((tempChar == 'e') && (syl != 1)) {
syl--;
}
return syl;
}
【问题讨论】:
-
在减去
syl--之前必须先检查前一个字符中没有元音。 -
您能给我们举个例子,说明第二种和第三种情况的有效输入和输出吗?
标签: java string for-loop charat