Hola.
El problema se debe a un pequeño fallo. Muy pequeño, pero suficiente para que el programa no funcione correctamente.
El problema está en el primer bucle for, te lo marco en rojo:
for(int i=0;i<aux.length;i++){
if(aux[0].charAt(i)=='a'||aux[0].charAt(i)=='e'||aux[0].charAt(i)=='i'||aux[0].charAt(i)=='o'||aux[0].charAt(i)=='u'){
ux=aux[0].charAt(i);
System.out.println(ux);
res[cont]=ux;
cont+=1;
}
}
Ahí le estás diciendo el bucle que aumente el contador según la longitud de
aux.
Pero claro,
aux es un array con un solo elemento, un String. Así que ese bucle solo se repite una vez.
Porque
aux.length = 1Para que funcione, tienes que decirle al bucle que aumente el contador según la longitud del String que hay dentro de aux.
Es decir, según lo que mida aux[0].
Si cambias este pequeño detalle, ya si funcionará. Te lo señalo en verde como ha de quedar.
for(int i=0;i<aux[0].length();i++){
if(aux[0].charAt(i)=='a'||aux[0].charAt(i)=='e'||aux[0].charAt(i)=='i'||aux[0].charAt(i)=='o'||aux[0].charAt(i)=='u'){
ux=aux[0].charAt(i);
System.out.println(ux);
res[cont]=ux;
cont+=1;
}
}
Con esto ya funciona.
Por otro lado, no es una solución muy elegante para un ejercicio.
Esta bien como prueba inicial, pero hay cosas que se deben mejorar.
Por ejemplo, el arreglo de char lo declaras con una longitud de [2] porque tú ya sabes que solo hay dos vocales.
Habría que pensar una forma de solucionarlo sin saber de antemano cuantas vocales vamos a encontrar.
Además este código está pensado para un arreglo con un solo y único String. También sería interesante hacerlo de manera que sirva para arreglos de cualquier tamaño, ya tenga solo 1 elemento, 5, 25, o los que sean...