Le vocali in una stringa

Scrivere un metodo statico in Java che ritorni il numero di vocali della stringa che gli viene passata come parametro.

Assumiamo che per vocali si intendano solo i caratteri a, e, i, o, u.

A voler fare i precisini bisognerebbe considerare anche i caratteri accentati, per non parlare dei caratteri che rappresentano suoni vocalici specifici di alcune lingue (tedesco, svedese, per dirne un paio). Ma limitiamoci alla soluzione di base.

In una classe creiamo un paio di metodi statici. Il primo, isVowel(), accetta in ingresso un carattere e ritorna true solo se questo é una vocale, secondo la nostra definizione:

public static final boolean isVowel(char c) {
switch(c) {
case 'A':
case 'a':
case 'E':
case 'e':
case 'I':
case 'i':
case 'O':
case 'o':
case 'U':
case 'u':
return true;
default:
return false;
}
}

Il secondo metodo é quello richiesto, accetta in input una stringa e fa un loop su di essa al fine di contare tutte le vocali presenti:

public static int vowels(String input) {
int value = 0;
if(input == null)
return 0;

for(int i = 0; i < input.length(); ++i)
if(isVowel(input.charAt(i)))
++value;
return value;
}

Per testare la funzionalità ho usato questo main:

public static void main(String[] argv) {
int value = vowels("ambaradan");
System.out.println(value);

value = vowels(null);
System.out.println(value);

value = vowels("");
System.out.println(value);

value = vowels("aeiou");
System.out.println(value);

value = vowels("sfrt");
System.out.println(value);
}

Nessun commento:

Posta un commento