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); } }
Gracias por compartirlo! Me lo copio en mi blog, para tenerlo a mano :P
ResponderEliminar