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