2016-07-08 6 views
1

Zuerst entschuldigen Sie mich für mein schlechtes Englisch. Es ist nicht meine Muttersprache (das ist eines meiner Probleme, du wirst später sehen warum).Wie zählen Vokale in einem String mit Akzentzeichen?

Ich mache eine Methode in Java und es wird vorgeschlagen, Vokale einer Zeichenfolge zu zählen. Die Eingabe kommt von der Windows-Eingabeaufforderung, weil ich kompiliere und mit javac und java Befehle ausführe.

Ich habe einige Codezeilen geschrieben, um die Übung zu lösen, aber ich kann keine Vokale zählen, die Akzente haben. z.B. Wenn ich "Canción" versuche, zählt seine Ausgabe nur 2 Vokale.

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

Ich benutze Scanner als Eingabemethode.

Ich habe versucht, 2 Strings zu vergleichen, weil ich denke, mit if(text.charAt(i) == 'A') ist nur langweilig (Vielleicht irre ich mich).

Wirklich ich weiß nicht, was zu tun ist. Ich habe versucht, Ascii-Werte (193 = Á) zu verwenden, habe versucht, nur de Vokale mit Akzent-Zeichen in der Test-String String test = "AEIOUaeiouÁÉÍÓÚáéíóú"; schreiben.

Nichts funktioniert. Ich werde der Person sehr dankbar sein, die mir helfen kann.

PS, ich darf nicht Array verwenden.

+0

Mögliche Duplikate von [Was ist der beste Weg zu überprüfen, ob ein Zeichen ein Vokal in Java ist?] (Http://stackoverflow.com/questions/26557604/whats-the-best-way-to-check-if- A-Zeichen-ist-ein-Vokal-in-Java) –

+0

Ich würde Ihre Klasse 'Character' nicht nennen, da dieser Name mit' java.lang.Character' kollidiert. Verwenden Sie im Allgemeinen keinen Klassennamen, der im Paket 'java.lang' enthalten ist, da dies zu großer Verwirrung führt, da es in jeder Java-Quelldatei automatisch importiert wird. –

+0

Vielen Dank für den Rat, ich werde bearbeiten. –

Antwort

1

Der einfachste Weg, „Vokale“ ist diese Einzeiler zu zählen:

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

Diese finden mit regex und Löschungen (ersetzt mit Leerzeichen) nicht alle Zeichen eines der aufgelisteten (über die negativen Charakterklasse).

Verwandte Themen