// Creamos una lista del tipo "String" que es el que almacenara todas nuestras palabras
List<String> listPalabras = new ArrayList<String>();
// Caractere a comparar
char letra = 'a';
// Sumatoria de longitudes
Integer totalLongitudes = 0;
Integer totalPalabras = 0;
float media = 0.00f;
// Formato decimal al resultado final
DecimalFormat df = new DecimalFormat("##0.00");
Scanner tec = new Scanner(System.in);
String frase, frase2;
int ncarac1, ncarac2;
frase2 = "";
do {
System.out.print("Dame una frase: ");
frase = tec.nextLine();
// Agregamos todas las palabras que el usuario valla ingresando
listPalabras.add(frase);
// Realizamos la suma de las longitudes
totalLongitudes += frase.length();
ncarac1 = frase.length();
ncarac2 = frase2.length();
if (ncarac2 < ncarac1) {
frase2 = frase;
}
if (ncarac2 == ncarac1) {
if (frase2.compareTo(frase) > 0) {
frase2 = frase;
}
// if (frase2.compareTo(frase) < 0) {
// frase2 = frase2;
// }
}
} while (ncarac1 > 0);
System.out.println("La frase mas larga es: " + frase2);
System.out.println();
System.out.println("Numero de letras \'a\' por palabra:");
// Recorremos nuestra lista de palabras
for(int i = 0; i < listPalabras.size(); i++){
if (!listPalabras.get(i).isEmpty()){
int conta = 0;
// Separamos los caracteres por cada elemento de nuestra lista con el metodo "toCharArray"
// Estos caracteres son almacenados en un arreglo del tipo "char" que es lo que nos devuelve el metodo mencionado anteriormente
char[] caracteres = listPalabras.get(i).toCharArray();
// Recorremos el arreglo con nuestros caracteres separados por cada palabra
for(int j = 0; j < caracteres.length; j++){
// Comparamos nuestro caracter por defecto "a" por nuestro carcater separado
if (letra == caracteres[j]){
// Si son iguales, aumentamos nuestro contador
conta++;
}
}
// Imprimos el resultado
System.out.println("Palabra: " + listPalabras.get(i) + " Letras (a): " + conta);
}
}
System.out.println();
System.out.println("Media de longitudes de las palabras:");
totalPalabras = listPalabras.size() - 1;
media = Float.parseFloat(totalLongitudes.toString()) / Float.parseFloat(totalPalabras.toString());
System.out.println("La media de las palabras es: " + df.format(media));
System.out.println();
System.out.println("Palabras mayores a 32 caracteres:");
for (int i = 0; i < listPalabras.size(); i++){
if(listPalabras.get(i).length() >= 32){
System.out.println(listPalabras.get(i));
}
}