Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: juan0754 en 03 de Julio 2018, 04:28
-
Hola amigos ... necesito ayuda con un problema. Me pidieron extraer vocales de un arreglo de String para posteriormente, poner cada vocal en un arreglo de char. Logre extraer las vocales del arreglo de String. Pero por alguna extraña razon no puedo meter las vocales a un arreglo de char. Intente de varias maneras pero por alguna extraña razón que desconozco no logro mostrar por pantalla el arreglo de char. :(
public class Prueba {
public static void main(String[] args) {
String[] aux=new String[1];
aux[0]="cdodi";
char ux=' ';
char[] res=new char[2];
int cont=0;
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;
}
}
for(int i=0;i<res.length;i++){
System.out.println(res[i]);
}
}
}
-
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 = 1
Para 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...