我需要在用户输入的字符串中找到所有元音,然后在屏幕上打印出元音最多的单词。
该程序使用用户输入
用户以小写字母键入一串单词
例如
“我喜欢java编程”
它应该读出来:
编程
我尝试将字符串分成不同的单词,这样可行 我只是不知道如何应用“for”循环来搜索不同的单词。 我需要在方法中工作,所以这是我用来在字符串中找到元音的方法:
public void findvowel(){
for(int index = 0;index < word.length();index++){
char vowel = word.charAt(index);
if( (vowel == 'a')||
(vowel == 'e')||
(vowel == 'i')||
(vowel == 'o')||
(vowel == 'u')){
System.out.println(vowel);
}
}
}
但我知道这不起作用。 你能帮助我吗?
答案 0 :(得分:5)
public class MaxVowels {
public static void main(String[] args) {
String sentence = "This is a loooooooooong sentence";
int maxVowelCount = 0;
String wordsWithMostVowels = null;
String[] words = sentence.split(" ");
for(String word : words){
int vowelCount = 0;
word = word.toLowerCase();
for(int i = 0; i < word.length() ; i++){
char x = word.charAt(i);
if(x == 'a' || x == 'e' || x == 'i' ||
x == 'o' || x == 'u'){
vowelCount++;
}
}
if(vowelCount > maxVowelCount){
maxVowelCount = vowelCount;
wordsWithMostVowels = word;
}
}
System.out.println("Word with most vowels is: " + wordsWithMostVowels);
}
}
代码相当简单,不需要解释=)
代码忽略了两个单词具有相同元音数的情况。在这种情况下,第一个单词将用作具有大多数元音的单词。
答案 1 :(得分:1)
这应该是一个很好的起点;请注意,方法名称现在确实说明了它的作用 -
// public static int findvowel(String word) {
public static int getVowelCount(String word) {
int count = 0;
if (word != null) {
word = word.trim().toLowerCase();
}
if (word == null || word.length() < 1) {
return count;
}
for (int index = 0; index < word.length(); index++) {
// That Fred he's a
char fred = word.charAt(index);
if ((fred == 'a') || (fred == 'e')
|| (fred == 'i') || (fred == 'o')
|| (fred == 'u')) {
++count;
}
}
System.out.println("For the word \"" + word
+ "\" there are " + count + " vowels");
return count;
}
答案 2 :(得分:1)
你正朝着正确的方向前进。几件事:
您不需要打印元音。你将计算所有单词中的元音数量。正如您每次只能做一个单词,您想要记住早先出现的单词的计数。更好的策略是仅记住具有最大元音数的单词。每当您找到包含更多元音的单词时,您都会更新结果。
您可以使用字段来记住具有最大元音数量的单词以及数字:
String wordWithMaxVowels;
int maxNumberOfVowels;
假设在这个实例中你正在处理一个word
。您需要一个 local 变量来保留此word
中的元音数。
int vowelCount = 0;
// Your code to loop over the word but remember
// to increase vowelCount if you find a vowel:
// vowelCount++;
最后检查一下这个数字是否大于我们到目前为止的最大值。如果是这种情况,请更新字段:
if(vowelCount > maxNumberOfVowels) {
wordWithMaxVowels = word;
maxNumberOfVowels = vowelCount;
}
另一个提示如下。要检查字符c
是否为元音,您可以:
if ("aeiouAEIOU".indexOf(c) != -1) {
vowelCount++;
}
答案 3 :(得分:0)
你的findVowel()方法几乎就在那里。当你应该计算它们时,为什么要输出元音?而不是findVowel(),我想你想要一个叫countVowels()的东西,它返回一个单词中的元音量。像这样:
public int countVowels(String word){
int count = 0;
for(int index = 0;index < word.length();index++){
char vowel = word.charAt(index);
if( (vowel == 'a')||
(vowel == 'e')||
(vowel == 'i')||
(vowel == 'o')||
(vowel == 'u')){
count++;
}
}
return count;
}
这样,您可以在句子中的每个单词上调用countVowels(),并跟踪到目前为止元音最多的单词。 例如:
String sentence = "This is a sentence.";
String[] words = sentence.split(" "); //splits sentence into string array by spaces
String maxStringSoFar = "";
int maxStringVowelCount = 0;
for(String s : words)
{
int currentWordVowelCount = countVowels(s);
if(currentWordVowelCount > maxStringVowelCount)
{
maxStringSoFar = s;
maxStringVowelCount = currentWordVowelCount;
}
}
答案 4 :(得分:0)
嘿,我有一些不同的答案-----
class strDemo2
{
public static void main(String args[])
{
String s1=new String("The Ghost of The Arabean Sea");
char c1[]=new char[30];
char c2[]={'a','e','i','o','u'};
s1.getChars(0,28,c1,0);
int pf=0,pl=0;
for(int i=0;i<s1.length();i++)
{
for(int j=0;j<5;j++)
{
if(c1[i]==c2[j])
{
System.out.println("vowel found at:-> "+(i+1)+" which is "+c2[j]);
}
}
}
}
}
答案 5 :(得分:0)
public class Test2{
public static void main(String[] args) {
String message = "words containig mooooost vowels";
String wordWithMostVowel = null;
int maxVowelCount = 0;
String tests[] = message.split(" ");
int totalVowel = 0;
for(String test : tests){
int vowelCount = 0;
test = test.toLowerCase();
for(int i=0;i<test.length();i++){
switch(test.charAt(i)){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
vowelCount++;
}
if(vowelCount > maxVowelCount){
maxVowelCount = vowelCount;
wordWithMostVowel = test;
}
}
totalVowel = totalVowel+vowelCount;
}
System.out.println("total vowels "+totalVowel+" word with max vowel is "+wordWithMostVowel);
}
}
答案 6 :(得分:0)
public static void Vowels(){
String Name = "seleniumtesting";
String Vowels = "aeiou";
char[] N = Name.toCharArray();
for(int i=0; i<N.length; i++){
if(Vowels.contains(String.valueOf(N[i]))){
System.out.println("It is a Vowel : "+ N[i]);
}
}
}