Redian新闻
>
java初学者求指点这段code
avatar
java初学者求指点这段code# Programming - 葵花宝典
x*y
1
特别是早年最红火的时候,发声有点在嗓子里面做。 最近10年似乎自然多了。。。
顶锅盖遁
avatar
h*y
2
IPHONE 4S里面找了半天,没有这个选项啊?
avatar
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;
}
avatar
O*e
4
哈哈,不用怕。。正常
张学友是受美声唱法的影响比较大。
张学友也有的他的毛病,用感情过度,歌声连贯性不大好,尤其是它的现场。早期尤其明显。
最近这些年好多了。。
avatar
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;

avatar
x*y
6
不知晕帅为何发笑?

【在 O*******e 的大作中提到】
: 哈哈,不用怕。。正常
: 张学友是受美声唱法的影响比较大。
: 张学友也有的他的毛病,用感情过度,歌声连贯性不大好,尤其是它的现场。早期尤其明显。
: 最近这些年好多了。。

avatar
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;
avatar
O*e
8
文化大革命即将开始。。。。

【在 x******y 的大作中提到】
: 不知晕帅为何发笑?
avatar
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)
: {

avatar
l*y
10
哈哈

【在 x******y 的大作中提到】
: 不知晕帅为何发笑?
avatar
s*o
11
修改了一下。还是没忍住写了个test case,结果发现条件3有问题 :P

点。

【在 c*w 的大作中提到】
: 谢谢你还有楼上wwzz。
: 对的,我也觉得弄个prev跟踪前一个char有点sloppy,用个flag是清楚多了,多谢指点。

avatar
l*y
12
嗯,得提前做好准备

【在 O*******e 的大作中提到】
: 文化大革命即将开始。。。。
avatar
s*i
13
如果Word就是 e 一个字母,怎么算?
[发表自未名空间手机版 - m.mitbbs.com]
avatar
k*i
14
天生缺陷吧
不过瑕不掩瑜
4大天王里
黎明声音最好
其次郭富城
然后刘德华张学友并排
不过张学友最会唱

【在 x******y 的大作中提到】
: 特别是早年最红火的时候,发声有点在嗓子里面做。 最近10年似乎自然多了。。。
: 顶锅盖遁

avatar
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;

avatar
O*e
16
这不出国了么。。没想到在美国也要烧起来了。。咋办。。这是要燎原哈

【在 l****y 的大作中提到】
: 嗯,得提前做好准备
avatar
x*n
17
use String.valueOf(char) instead of "" + char
avatar
x*y
18
4天王里面, 张条件最好

【在 k**i 的大作中提到】
: 天生缺陷吧
: 不过瑕不掩瑜
: 4大天王里
: 黎明声音最好
: 其次郭富城
: 然后刘德华张学友并排
: 不过张学友最会唱

avatar
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;

avatar
n*w
20
女生?男生更了解男声。
黎明是奶油小生的声音,太腻了,不算好。而且鼻音太重了。。。
郭富城唱得最烂。
lz能贴个例子么?说的太抽象了。

【在 k**i 的大作中提到】
: 天生缺陷吧
: 不过瑕不掩瑜
: 4大天王里
: 黎明声音最好
: 其次郭富城
: 然后刘德华张学友并排
: 不过张学友最会唱

avatar
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;

avatar
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;

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。