generated from programacionThiar/plantilla_iesthiar-maven-21
90 lines
3.4 KiB
Java
90 lines
3.4 KiB
Java
package iesthiar;
|
|
|
|
import java.io.*;
|
|
import java.util.*;
|
|
|
|
public class Ejercicio_B7 {
|
|
|
|
public static void main(String[] args) {
|
|
|
|
System.out.println("ESTADÍSTICAS DE LIBROS");
|
|
System.out.println("----------------------");
|
|
System.out.println("");
|
|
|
|
try {
|
|
// Obtenemos la lista de archivos de la carpeta Libros
|
|
File rutaLibros = new File("Documentos/Libros");
|
|
File[] listaLibros = rutaLibros.listFiles();
|
|
|
|
// Para cada archivo
|
|
for (File libro : listaLibros) {
|
|
|
|
// Lector de archivo
|
|
Scanner lector = new Scanner(libro);
|
|
|
|
// Inicializamos contadores y Hashtable
|
|
int numLin = 0, numPal = 0, numCar = 0;
|
|
Hashtable<String, Integer> hashPalabras = new Hashtable<String, Integer>();
|
|
|
|
// Procesamos líneas mientras quede algo por leer
|
|
while (lector.hasNext()) {
|
|
// Línea
|
|
String linea = lector.nextLine();
|
|
numLin++;
|
|
|
|
// Palabras
|
|
String[] palabras = linea.split(" ");
|
|
numPal += palabras.length;
|
|
|
|
// Para cada palabra actualizamos numCar y metemos en la Hashtable
|
|
for (String palabra : palabras) {
|
|
char[] letras = palabra.toCharArray();
|
|
numCar += letras.length;
|
|
|
|
// Si ya existe la palabra aumentamos su valor, si no existe la guardamos
|
|
if (hashPalabras.containsKey(palabra)) {
|
|
hashPalabras.put(palabra, hashPalabras.get(palabra) + 1);
|
|
} else {
|
|
hashPalabras.put(palabra, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Mostramos estadísticas del libro
|
|
System.out.println("Libro: " + libro.getName());
|
|
System.out.println("Lineas totales: " + numLin);
|
|
System.out.println("Número de palabras: " + numPal);
|
|
System.out.println("Número de carácteres: " + numCar);
|
|
System.out.println("Las 10 palabras más comunes son: ");
|
|
|
|
// Muestra las 10 palabras más comunes
|
|
muestraPalabrasMasComunes(hashPalabras);
|
|
|
|
System.out.println("");
|
|
}
|
|
|
|
} catch (FileNotFoundException e) {
|
|
System.out.println("Error: El fichero no existe");
|
|
} catch (Exception e) {
|
|
System.out.println("Error: " + e);
|
|
}
|
|
}
|
|
|
|
// Muestra las 10 palabras más comunes
|
|
public static void muestraPalabrasMasComunes(Hashtable<String, Integer> t) {
|
|
|
|
// Obtenermos una lista ordenada por nº de palabras
|
|
ArrayList<Map.Entry<String, Integer>> l = new ArrayList(t.entrySet());
|
|
Collections.sort(l, Collections.reverseOrder(new Comparator<Map.Entry<String, Integer>>() {
|
|
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
|
|
return o1.getValue().compareTo(o2.getValue());
|
|
}
|
|
}));
|
|
|
|
// Imprime las 10 palabras más comunes
|
|
for (int i = 0; i < 10; i++) {
|
|
System.out.println(l.get(i));
|
|
}
|
|
}
|
|
}
|