1

我需要在用户输入的字符串中找到所有元音,然后在屏幕上打印出元音最多的单词。
该程序使用用户输入。
用户键入一串小写的单词。
例如

“我喜欢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);
            }
        }
    }

但我知道这行不通。你们能帮帮我吗?

4

7 回答 7

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);
    }
}  

代码相当简单,不需要解释 =)
代码忽略了两个单词具有相同数量元音的情况。在这种情况下,第一个单词将用作元音最多的单词。

于 2013-11-14T19:40:02.467 回答
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;
}
于 2013-11-14T19:39:51.647 回答
1

你正朝着正确的方向前进。一些事情:

您不需要打印元音。您将计算所有单词中元音的数量。由于您将一次只做一个单词,因此您要记住较早出现的单词的计数。更好的策略是只记住元音数量最多的单词。每当您发现一个包含更多元音的单词时,您都会更新您的结果。

您可以使用字段来记住具有最大元音数的单词以及数字:

String wordWithMaxVowels;
int maxNumberOfVowels;

假设在这种情况下,您正在处理单个word. 您需要一个局部变量来保持 this 中的元音计数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++;
}
于 2013-11-14T19:42:15.650 回答
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;
     }
}
于 2013-11-14T19:44:30.510 回答
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]);
              }    
           }  
        }               

   }
}
于 2015-07-08T07:36:59.753 回答
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);
}

}

于 2016-01-10T08:35:20.317 回答
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]);

            }
        }
    }
于 2017-02-10T07:33:40.807 回答