jueves, 28 de octubre de 2010

Ejercicio contar 'a'

Contar las sucesivas 'a' que pueda haber al principio de una palabra.
Por ejemplo, si la palabra es "aaavión", debe contar 3 'a'.

public class ContarA {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String frase;
        int pos=0;       //para ir indicando la posición de cada caracter
        int contador=0;  //cuenta las 'a'
        int comodin=0;   //he creado esta variable para comprobar el último caracter
        System.out.println("A continuación escriba una frase (que contenga alguna 'a'):");
        frase = entrada.nextLine();
        frase = frase.toLowerCase();
        if (frase.indexOf('a') == -1)
            System.out.println("La frase introducida no contiene ninguna 'a'.");
        else{
            if (frase.charAt(0) == 'a'){
                 do{
                    contador = contador + 1;
                    pos++;
                } while (frase.charAt(pos)=='a' & pos < (frase.length()-1));
                comodin = pos;
            }
            for (pos=1; pos < (frase.length()-1); pos++)
                if (Character.isLetter(frase.charAt(pos-1)) == false)
                    while(frase.charAt(pos) == 'a' & pos < (frase.length()-1)){
                        contador = contador + 1;
                        pos++;
                        comodin = pos;
                    }
            if ((comodin == pos | comodin == (frase.length()-1) | !Character.isLetter(frase.charAt(frase.length()-2))) & frase.charAt(pos=(frase.length()-1)) == 'a')
                contador = contador + 1;
            System.out.println("El número de 'a' es " +contador);
        }
    }	
}

No estoy del todo contenta con la solución, porque me quedó un poco largo y quizás no se entiende demasiado bien, pero como había empezado con esta solución, ya era una cuestión personal terminarla ;)

A continuación escribo la solución propuesta por el profesor:

public class ContarAMejor {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String frase;
        boolean fueraPalabra;
        int pos, contador=0;
        fueraPalabra = true;
        System.out.println("A continuación escriba una frase (que contenga alguna 'a'):");
        frase = entrada.nextLine();
        frase = frase.toLowerCase();
        if (frase.indexOf('a') == -1)
            System.out.println("La frase introducida no contiene ninguna 'a'.");
        else{
            for (pos=0; pos < frase.length(); pos++)
                if (frase.charAt(pos) == 'a' & fueraPalabra == true)
                    contador++;
                else
                    fueraPalabra = !Character.isLetter(frase.charAt(pos));
        }
        System.out.println("El número total de 'a' es: " + contador);
    }	
}

1 comentario:

  1. Gracias por compartirlo! Me lo copio en mi blog, para tenerlo a mano :P

    ResponderEliminar