如何在字符串中找到元音,并在屏幕上打印出元音最多的单词?

时间:2013-11-14 19:32:20

标签: java string for-loop

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

  

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

但我知道这不起作用。 你能帮助我吗?

7 个答案:

答案 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]);

            }
        }
    }