9

私は宿題にこの問題を抱えています(私は正直で、少なくともそれを隠そうとはしていません)そして私はそれを行う方法を理解するのに問題があります。

次の宣言があるとします。Stringphrase="WazzUp?-Who's On FIRST ??? --IDUNNO"; 文字列内の母音の数を数えるために必要なコードを記述し、適切なメッセージを画面に出力します。

これが私がこれまでに持っているコードです:

String phrase =  " WazzUp ? - Who's On FIRST ??? - IDUNNO";
int i, length, vowels = 0;
String j;
length = phrase.length();
for (i = 0; i < length; i++)
{

  j = phrase.substring(i, i++);
  System.out.println(j);

  if (j.equalsIgnoreCase("a") == true)
    vowels++;
  else if (j.equalsIgnoreCase("e") == true)
    vowels++;
  else if (j.equalsIgnoreCase("i") == true)
    vowels++;
  else if (j.equalsIgnoreCase("o") == true)
    vowels++;
  else if (j.equalsIgnoreCase("u") == true)
    vowels++;

}
System.out.println("Number of vowels: " + vowels);

しかし、私がそれを実行すると、それはただたくさんの空白行を作ります。誰か助けてもらえますか?

4

10 に答える 10

9

phrase.substring(i, i++);である必要がありますphrase.substring(i, i + 1);

i++の値を与えてiから、それに1を追加します。あなたが今それを持っているように、String jは事実上phrase.substring(i, i);、それは常に空の文字列です。

ですでにインクリメントされているため、ループiの本体での値を変更する必要はありません。forfor (i = 0; i < length; i++)

于 2012-12-05T23:49:39.967 に答える
9

ループ内にprintステートメントを含める必要はないと思います。

String s = "Whatever you want it to be.".toLowerCase();
int vowelCount = 0;
for (int i = 0, i < s.length(); ++i) {
    switch(s.charAt(i)) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            vowelCount++;
            break;
        default:
            // do nothing
    }
}

これにより、文字列が小文字に変換され、文字列内のすべての文字の母音がチェックされます。

于 2012-12-05T23:54:14.063 に答える
8

これはワンライナーである可能性があります/すべきです

System.out.println("the count of all vowels: " + (phrase.length() - phrase.replaceAll("a|e|i|o|u", "").length()));

およびその文字列のみのメソッド

于 2014-10-30T20:57:58.677 に答える
4

キャップ内の母音を考慮するために上記の回答を改善する:

System.out.println(s.length() - s.toLowerCase().replaceAll("a|e|i|o|u|", "").length());
于 2015-03-02T18:17:02.610 に答える
0

使用された後のi++インクリメントiは、基本的にstring.substring(i、i)と言っています。終了マークは排他的であるため、これは常に空の文字列を返します。簡単な修正は、次のように変更することです。

j = phrase.substring(i, ++i);

お役に立てば幸いです。

于 2012-12-05T23:50:24.130 に答える
0

コレクションの使用:

     String word = "busiunesuse";
     char[] wordchar= word.toCharArray();
     Character allvowes[] ={'a','e','i','o','u'};
     Map<Character, Integer> mymap = new HashMap();

     for(Character ch: wordchar)
     {
         for(Character vowels : allvowes)
         {
            if(vowels.equals(ch))
            {
             if(mymap.get(ch)== null)
             {
                 mymap.put(ch, 1);
             }
             else
             {
                 int val = mymap.get(ch);
                 mymap.put(ch, ++val);
             }
            }

         }
     }

     Set <Character> myset = mymap.keySet();
     Iterator myitr = myset.iterator();

     while(myitr.hasNext())
     {
         Character key = (Character) myitr.next();
         int value = mymap.get(key);
         System.out.println("word:"+key+"repetiotions:"+value);


     }


}

}

于 2018-04-11T06:01:50.897 に答える
0

私はそれが古い編集であることを知っていますが、母音に配列を使用する方が良いと思います:

public static void main(String[] args) {

    String phrase = " WazzUp ? - Who's On FIRST ??? - IDUNNO".toLowerCase();
    int vowels = 0;
    String[] array = {"a", "e", "i", "o", "u"};
    for (int i = 0; i < phrase.length(); i++) {
        String j = phrase.substring(i, i + 1);
        System.out.println(j);
        for (int n = 0; n < array.length; n++) {
            if (j.equals(array[n])) {
                vowels++;
            }
        }
    }
    System.out.println("Number of vowels: " + vowels);
}
于 2018-07-05T18:18:35.857 に答える
0

文字列内の母音の数を数えるには:

class Test {  

      static int a;

      public static String countVowel(String strName) { 

          char ch[] = strName.toCharArray();


          for(int i=0; i<ch.length; i++) {

            switch(ch[i]) {

            case 'a':

             a++;   

            break;      

            case 'e':
                a++;    

                break;

            case 'i':
                 a++;   

                break;

            case 'o':
                 a++;   

                break;

            case 'u':
                 a++;   

                break;

            }

          }

          strName = String.valueOf(a);

          return strName;       
      } 

      public static void main(String[] args) {  

        Scanner s = new Scanner(System.in);
        System.out.print(countVowel(s.nextLine())); 
     }   

  } 
于 2018-08-11T18:04:33.230 に答える
0

私は少し遅れていることは知っていますが、アクセントを使って作業している場合、この応答は将来他の人に役立つ可能性があります

問題を回避するために、入力テキストを、文字とアクセントのアクセント(ウムラウト、アクサングラーブ、アキュートアクセント、曲折アクセントなど)を分離するノーマライザーを使用してNFDに正規化できます。

例: "schön" ----NFD----> "scho\u0308n"

解決策は

  1. テキストをで正規化し、アクセントを( )Normalizerに置き換えますreplaceAll
  2. テキストを小文字に変換する
  3. 母音(または数えたいもの)ではないすべてのものを置き換えます
import java.text.Normalizer;

public class Main {
    private static String str = "This ïs a téxt with vòwêls";

    public static void main(String[] args) {
        // Normalizing the text
        // Replacing all the accents
        // Convert to lowercase
        String text = Normalizer.normalize(str, Normalizer.Form.NFD)
                .replaceAll("[\\u0300-\\u036f]", "")
                .toLowerCase();

        // We replace everything but vowels
        int vowels_count = text.replaceAll("[^aeiou]", "").length();

        System.out.printf("%s%s%s %d %s",
                "\nThe text \"",
                str,
                "\" has",
                vowels_count,
                "vowels"
        );
    }

}
于 2021-04-30T15:21:55.207 に答える
-1

パブリッククラスJavaApplication2{

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {
    // TODO code application logic here
    System.out.println("Enter some text");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String input = br.readLine().toLowerCase();

    char[] vowel = new char[]{'a', 'e', 'i', 'o', 'u'};
    int[] countVowel = new int[5];
    for (int j = 0; j < input.length(); j++) {
        char c =input.charAt(j);
        if(c=='a')
            countVowel[0]++;
        else if(c=='e')
            countVowel[1]++;
        else if(c=='i')
            countVowel[2]++;
        else if(c=='o')
            countVowel[3]++;
        else if(c=='u')
            countVowel[4]++;


    }
     for (int i = 0; i <countVowel.length; i++) {
            System.out.println("Count of vowel " + vowel[i] + "=" + countVowel[i]);
        }

    }
}
于 2014-01-11T09:19:01.207 に答える