generated from programacionThiar/plantilla_iesthiar-maven-21
ejercicios sin terminar
This commit is contained in:
89
src/main/java/iesthiar/Ejercicio_B7.java
Normal file
89
src/main/java/iesthiar/Ejercicio_B7.java
Normal file
@@ -0,0 +1,89 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user