2016-07-08 11 views
1

まず、私の悪い英語のために私を許してください。それは私の母国語ではありません(これは私の問題の1つです。アクセント記号を含む文字列の母音を数えるには?

私は、Javaのメソッドを作ってるんだし、文字列の母音をカウントすることが提案されています。私はjavacとjavaコマンドを使ってコンパイルして実行しているので、入力はWindowsプロンプトから来ます。

私は運動を解決するために、コードのいくつかの行を書いたが、私はアクセント記号を持つ母音をカウントすることはできません。例えば。私が "canción"を試してみると、その出力は2つの母音を数えるだけです。

public static int countVowels(String text){ 
    int answer = 0; 
    String test = "AEIOUaeiou"; 
    for (int i = 0; i < text.length(); i++) 
     for (int j = 0; j < test.length(); j++) 
      if (text.charAt(i) == test.charAt(j)) { 
       answer++; 
       break; 
      } 
    return answer; 
} 

public static void form() { 
    Scanner in = new Scanner(System.in); 
    System.out.println("This program counts the number of vowels."); 
    int answer = 0; 
    String text = ""; 
    while (!text.equals("-1")) { 
     System.out.print("Enter a line of text (-1 to exit): "); 
     text = in.nextLine(); 
     answer = Character.countVowels(text); 
     System.out.println("Number of vowels: " + answer); 
    } 
    System.out.println("Closing the program..."); 
} 

私はスキャナを入力方法として使用しています。

私はif(text.charAt(i) == 'A')を使用するだけで(たぶん私が間違っている)退屈だと思う原因I」は2文字列を比較してみました。

本当に私は何をすべきか分かりません。私はAsciiの値(193 =Á)を使って試しましたが、テスト文字列String test = "AEIOUaeiouÁÉÍÓÚáéíóú";にアクセント記号付きの母音を書くだけでした。

何も機能しません。私は私を助けることができる人に非常に感謝します。

PSは、私は、配列を使用することはできませんよ。

+0

[文字がJavaの母音かどうかを確認するにはどうすればよいですか?](http://stackoverflow.com/questions/26557604/whats-the-best-way-to-check-if- a-character-is-a-vowel-in-java) –

+0

クラス名が 'java.lang.Character'と衝突するので、私はあなたのクラス' Character'を呼び出さないでしょう。一般に、 'java.lang'パッケージに存在するクラス名は使用しないでください。これは、各Javaソースファイルで自動インポートされるため、多くの混乱を招きます。 –

+0

アドバイスありがとう、私は編集します。 –

答えて

1

「母音」をカウントする最も簡単な方法は、このワンライナーです:

int vowelCount = str.replaceAll("[^AEIOUaeiouÁÉÍÓÚáéíóú]", "").length(); 

この使用して見つける正規表現と否定文字クラスを経由して削除(空白で置き換えます)すべての文字でない記載されているものの一つ( )。

関連する問題