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

コードは非常に簡単で、説明は必要ありません =)
コードは、2 つの単語の母音が同じ数である場合を無視します。この場合、最初の単語が母音の多い単語として使用されます。

于 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 に答える
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
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 に答える