h*y
2 楼
IPHONE 4S里面找了半天,没有这个选项啊?
c*w
3 楼
初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
1.a,o,u,e,i,y都算元音
2.如果两个或以上元音连续,则只算一个音节
3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
4.不能用regex,得用loop
int numSyllables(String word)
{
char[] wordarray = word.toCharArray();
int wordcount = 0;
char prev = 0;
for (int i = 0; i < wordarray.length; i++) {
char cur = wordarray[i];
if (i > 0) prev = wordarray[i-1];
if (cur!='e' || i!=wordarray.length-1) {
if ("aoeuiyAOEUIY".contains(""+cur)) {
if (!"aoeuiyAOEUIY".contains(""+prev
)) {
wordcount++;
}
}
} else if (wordcount == 0) {
wordcount++;
}
}
return wordcount;
}
这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
1.a,o,u,e,i,y都算元音
2.如果两个或以上元音连续,则只算一个音节
3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
4.不能用regex,得用loop
int numSyllables(String word)
{
char[] wordarray = word.toCharArray();
int wordcount = 0;
char prev = 0;
for (int i = 0; i < wordarray.length; i++) {
char cur = wordarray[i];
if (i > 0) prev = wordarray[i-1];
if (cur!='e' || i!=wordarray.length-1) {
if ("aoeuiyAOEUIY".contains(""+cur)) {
if (!"aoeuiyAOEUIY".contains(""+prev
)) {
wordcount++;
}
}
} else if (wordcount == 0) {
wordcount++;
}
}
return wordcount;
}
O*e
4 楼
哈哈,不用怕。。正常
张学友是受美声唱法的影响比较大。
张学友也有的他的毛病,用感情过度,歌声连贯性不大好,尤其是它的现场。早期尤其明显。
最近这些年好多了。。
张学友是受美声唱法的影响比较大。
张学友也有的他的毛病,用感情过度,歌声连贯性不大好,尤其是它的现场。早期尤其明显。
最近这些年好多了。。
w*z
5 楼
把所有元音放在一个 hashset 里,做check会高效一点。
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
s*o
7 楼
只用loop大概也就这样了。按我的习惯改一下的话
// not verified
char[] wordarray = word.toCharArray();
int wordcount = 0;
boolean isPreviousVowel = false;
for (int i = 0; i < wordarray.length; i++) {
char cur = wordarray[i];
if (cur == 'e' && i == wordarray.length - 1 && !isPreviousVowel)
{
return wordcount == 0? 0 : wordcount +1;
}
if ("aoeuiyAOEUIY".contains("" + cur)) {
if (!isPreviousVowel) {
wordcount++;
}
isPreviousVowel = true;
} else {
isPreviousVowel = false;
}
}
return wordcount;
// not verified
char[] wordarray = word.toCharArray();
int wordcount = 0;
boolean isPreviousVowel = false;
for (int i = 0; i < wordarray.length; i++) {
char cur = wordarray[i];
if (cur == 'e' && i == wordarray.length - 1 && !isPreviousVowel)
{
return wordcount == 0? 0 : wordcount +1;
}
if ("aoeuiyAOEUIY".contains("" + cur)) {
if (!isPreviousVowel) {
wordcount++;
}
isPreviousVowel = true;
} else {
isPreviousVowel = false;
}
}
return wordcount;
c*w
9 楼
谢谢你还有楼上wwzz。
对的,我也觉得弄个prev跟踪前一个char有点sloppy,用个flag是清楚多了,多谢指点。
【在 s***o 的大作中提到】
: 只用loop大概也就这样了。按我的习惯改一下的话
: // not verified
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
: boolean isPreviousVowel = false;
:
: for (int i = 0; i < wordarray.length; i++) {
: char cur = wordarray[i];
: if (cur == 'e' && i == wordarray.length - 1 && !isPreviousVowel)
: {
对的,我也觉得弄个prev跟踪前一个char有点sloppy,用个flag是清楚多了,多谢指点。
【在 s***o 的大作中提到】
: 只用loop大概也就这样了。按我的习惯改一下的话
: // not verified
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
: boolean isPreviousVowel = false;
:
: for (int i = 0; i < wordarray.length; i++) {
: char cur = wordarray[i];
: if (cur == 'e' && i == wordarray.length - 1 && !isPreviousVowel)
: {
s*i
13 楼
如果Word就是 e 一个字母,怎么算?
[发表自未名空间手机版 - m.mitbbs.com]
[发表自未名空间手机版 - m.mitbbs.com]
s*i
15 楼
my 2 cents:
1. use charAt(...) instead;
2. use if-test instead of "aoeuiyAOEUIY".contains(...). For example:
boolean isVowel(char c)
{
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c
== 'y' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U' || c ==
'Y';
}
It is ugly but much more efficient.
if you do want to use "aoeuiyAOEUIY".contains(...), declare "aoeuiyAOEUIY"
as a variable before the loop;
[发表自未名空间手机版 - m.mitbbs.com]
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
1. use charAt(...) instead;
2. use if-test instead of "aoeuiyAOEUIY".contains(...). For example:
boolean isVowel(char c)
{
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c
== 'y' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U' || c ==
'Y';
}
It is ugly but much more efficient.
if you do want to use "aoeuiyAOEUIY".contains(...), declare "aoeuiyAOEUIY"
as a variable before the loop;
[发表自未名空间手机版 - m.mitbbs.com]
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
x*n
17 楼
use String.valueOf(char) instead of "" + char
ET
19 楼
1 把输入变成lowercase, 比较aoeiu简单些。
2. hashset aoeiu
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
2. hashset aoeiu
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
n*t
21 楼
其实我更感兴趣的是 regex 怎么写 ^_^
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
d*a
22 楼
用switch statement实现一个finite state machine,会比较清晰。正规表达式一般是
这样实现的。
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
这样实现的。
【在 c*w 的大作中提到】
: 初学java和编程,想请大家指点指点下边这段code有什么办法可以写得更好?
: 这个方法输入是一个word (String),然后想找到word里有几个音节,规则如下:
: 1.a,o,u,e,i,y都算元音
: 2.如果两个或以上元音连续,则只算一个音节
: 3.如果e是词的最后一个字母,而此外这个词没有别的音节,那这个e不算音节
: 4.不能用regex,得用loop
: int numSyllables(String word)
: {
: char[] wordarray = word.toCharArray();
: int wordcount = 0;
相关阅读
居然有正负零ML语言求教!谢谢木有C++ certificate?size不固定的struct怎么定义呀?c++中把double类型转化为string用那个函数Re: 一个小c++(stl) 的问题解释一下吧Re: C语言的前途??? i m confusedXerces-C++ in vs.net questiongmail 是怎么实现那些html功能的matlab: find main workspace variable?Solaris shell problem, HELP me !!!!有什么办法能最快的知道那些bit是1?Ask a g++ compilation qestionAnother questionAfx window,如何获得control handle?Re: [转载] 问一问题有用Eclipse的嘛?c++ rand() 一问请教一个关于字符指针的简单问题