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;
相关阅读
为什么你们都歧视阿三呢?我认识的印度女生都听温柔的 (转载)只有状态自动机(state machine)是正确的编程模型亚麻內推和磨面 (转载)Kotlin 1.0发布了 没人关心?Java有closure吗?xamarin被软买了CITI的网站是谁做的呀?Web App Smart Card AuthenticationSwift看得我头大。谁推荐个 machine learning 入门教程用公司的电脑做自己的小项目危险吗angular2真是装b,搞得太复杂。请帮我看看这个java method? 一直不正常运行请教一个javascript 的问题a=b=0比a=0,b=0快DNN就是hype (转载)现在Scala又火了?码公补脑吃什么?各位轮子派?你们用到后面不觉得蛋疼?Pandas 的index真他妈的奇特