Vokale zählen

Status
Nicht offen für weitere Antworten.

Timo90

Mitglied
Ich möchte ein Programm schreiben, welches die Vokale eines gegebenen Strings s zählt.

Ich würde ne Schleife schreiben welche jeden Buchstaben überprüft auf Vokal

s.charAt(i)== 'a' || ...

dass sollte dann true ergeben und bei true sollte anzVokal++ gemacht werden...jedoch funktioniert das mit dem Vergleichen nicht so wirklich.

Danke
 

partsch

Aktives Mitglied
du könntest sie mit einem switch vergleichen:
Java:
char mayVokal = word.charAt(i);
			switch(mayVokal){
			case 'a': ++vokale; break;
			case 'e': ++vokale; break;
			case 'i': ++vokale; break;
			case 'o': ++vokale; break;
			case 'u': ++vokale; break;
			}
 

Guybrush Threepwood

Top Contributor
Soll das nur für's Deutsche funktionieren, oder generell? Ansonsten wären ja noch viel mehr Zeichen relevant (ohne gewähr für Vollständigkeit): äöüÄÖÜßéèêëôÉÈÊËÀÁÂÅÃÆàáâæåãçÔÒÓÕØòóôõøœìíîÌÍÎùúûÙÚÛ

Dann könnte man es ja auch so machen:
Java:
String text = "..."; //irgend ein text
int number = text.length() - text.replaceAll("[aeiouAEIOUäöüÄÖÜßéèêëôÉÈÊËÀÁÂÅÃÆàáâæåãçÔÒÓÕØòóôõøœìíîÌÍÎùúûÙÚÛ]", "").length();
(ungetestet)

Da braucht man dann auch keine Schleife, sondern berechnet, um wie viel ein String schrumpft, wenn man die Vokale raushaut.
 
Zuletzt bearbeitet:

w0ddes

Bekanntes Mitglied
@ Guybrush Threepwood

Danke für diese Idee, hatte ein ähnliches Problem und konnt es damit nun lösen ;)
Aber mal Offtopic: Langeweile? :D
 

Marco13

Top Contributor
... wobei es da ein
Code:
            case 'a':
            case 'e':
            case 'i': 
            case 'o':
            case 'u': ++vokale; break;
schon tun würde...
 

Landei

Top Contributor
du könntest sie mit einem switch vergleichen:
Java:
char mayVokal = word.charAt(i);
			switch(mayVokal){
			case 'a': ++vokale; break;
			case 'e': ++vokale; break;
			case 'i': ++vokale; break;
			case 'o': ++vokale; break;
			case 'u': ++vokale; break;
			}

Das ist der reine Overkill. Wie wäre es mit
Java:
int vokale = 0;
for(int i = 0; i < word.length; i++) vokale += "aeiou".indexOf(word.charAt(i)) < 0 ? 0 : 1;
 

Guybrush Threepwood

Top Contributor
Da sieht man mal wieder, auf wie viele verschiedene Arten ein Problem programmiertechnisch lösbar ist. Da soll nochmal einer sagen, Programmieren ist keine kreative Leistung.

Natürlich ist meine Lösung am elegantesten. :bae:

P.S.: Sind äöü bei Euch keine Vokale?

P.P.S.: Dann müsste man noch diskutieren, ob die Diphtonge eu, ei, äu und das lange ie jeweils nur als einzelner Vokal gehandhabt werden, so wie es in der Phonetik meist gehandhabt wird. Das kommt aber sicher auf den Anwendungsfall an.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Übrigens: Auch wenn ich switch hier für unangemessen halte, gäbe es in diesem Fall noch eine Optimierung. Wenn man in verschiedenen case-Abschnitten das gleiche tut, kann man auch "durchfallen" lassen:
Java:
char mayVokal = word.charAt(i);
switch(mayVokal){ case 'a':  case 'e': case 'i': case 'o': case 'u': vokale++; }
 

w0ddes

Bekanntes Mitglied
Übrigens: Auch wenn ich switch hier für unangemessen halte, gäbe es in diesem Fall noch eine Optimierung. Wenn man in verschiedenen case-Abschnitten das gleiche tut, kann man auch "durchfallen" lassen:
Java:
char mayVokal = word.charAt(i);
switch(mayVokal){ case 'a':  case 'e': case 'i': case 'o': case 'u': vokale++; }

wie Marco13 schon sagte ;)
 
Status
Nicht offen für weitere Antworten.

Oben