Luego de investigar con especialistas en el tema, programadores de deferentes ramas y profesores hemos dado con la respuesta al dilema y la compartimos en esta publicación.
Solución:
Simplemente puede usar una expresión regular en su método:
public static boolean containsVowels(String word)
return Pattern.matches(".*a.*e.*i.*o.*u.*y.*", word);
Utilizar una expresión regular
if (word.matches("[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]"))
//found one
Donde [^aeiou]*
significa cero o más consonantes; ^
en una expresión regular significa ninguna de las cosas en [
…]
.
Puede que no sea la solución más rápida pero está claro; especialmente si forma la expresión regular sin codificar [^aeiou]
tantas veces como yo.
Editar: la expresión regular de @Patrick es superior.
El containsVowels solo devolverá true Si el string “aeiouy” es una subcadena de la palabra, así:
“preaeiouy”,”aeiouypost”,”preaeiouypost”
Este sería un método más correcto:
public static boolean containsVowels(String word)
Acuérdate de que puedes parafrasear tu experiencia .