我的程序假设每行检查一个单词元音;但是,如果它是单词中的最后一个字母,或者元音是' o'我一直盯着这几个小时。任何帮助都会很棒。
import java.util.*;
public class Vowel
{
public static void main(String[] args)
{
String word;
int len;
int position;
int vowelCount;
char ch;
Scanner kbd = new Scanner(System.in);
word = kbd.next();
while (!word.equals("the_end"))
{
len = word.length() - 1;
vowelCount = 0;
for (position = 0; position < len-1; position++)
{
ch = word.charAt(position);
if ((ch == 'a') || (ch == 'e') || (ch == 'i')
|| (ch == 'o') || (ch == 'u')) vowelCount++;
}
System.out.print("There ");
if (vowelCount == 1) System.out.print ("is 1 vowel in ");
else System.out.print("are " + vowelCount + " vowels in ");
System.out.println(word);
word = kbd.next();
}
}
}
我现在正在尝试
for (position = 0; position < word.length(); position++)
答案 0 :(得分:1)
for (position = 0; position < len-1; position++)
^^^^^^^^
你在字符串结尾之前停止循环。
此外,如果您要将len
分配给word.length()-1
,那么您也可以通过这种方式切断信件。最好只写:
for (position = 0; position < word.length(); position++)
我不知道为什么它会丢失字母&#39; o&#39;但您可能想要检查是否需要将字符串转换为小写字母。目前,如果你的元音是大写字母,他们就不会被计算在内。
你可以这样做:
word = word.toLowerCase();
在for
循环之前。
答案 1 :(得分:1)
假设您有一个六个字母的单词"kitten"
。第一个字符位置为0,因此您希望循环中的position
采用值0,1,2,3,4和5.
您的代码实际执行的操作:
len = word.length()-1;
这会将len
设置为5。
for (position = 0; position < len-1; position++)
由于len-1
为4,因此只会position < 4
运行循环。也就是说,只要position
达到4,它就会退出(因为4 < 4
是false
)。所以position
只会取值0,1,2,3。也就是说,你将被2关闭。
在上面的代码中删除两个 -1
将消除此问题。
答案 2 :(得分:0)
您似乎想要遍历整个String
,但您有
len = word.length()-1;
...
for (position = 0; position < len-1; position++)
// ^^^ why?
您将String
2个字符缩短了。别这么做。
for (position = 0; position < word.length(); position++)