Si encontrais algun error se agradecen sugerencias y críticas. Sobre todo en el método calculaEntropia, porque al no tener ni idea de estadística puede hacer cualquier cosa.
Código
import java.io.*; import java.util.*; public class analizaEntropia { private char alfabeto[]; //array de caracteres que almacena el alfabeto. private int repAlfabeto[]; //numero de veces que se repite cada caracter. private int tamAlfabeto=255; //tamaño del alfabeto que vamos a usar. private int tamTextoCifrado=0; //tamaño en caracteres del archivo. private float entropia[]; //array de entropías. public analizaEntropia() { //Produce: Un alfabeto con sus respectivas frecuencias. for (int i=0; i<=tamAlfabeto; i++) { alfabeto[i]=AsciiDecToChar(i); } for (int i=0; i<=tamAlfabeto; i++) { repAlfabeto[i]=0; } for (int i=0; i<=tamAlfabeto; i++) { entropia[i]=0; } } public analizaEntropia(int tamAlf) { //Produce: Un alfabeto con sus respectivas frecuencias. tamAlfabeto=tamAlf; for (int i=0; i<=tamAlfabeto; i++) { alfabeto[i]=AsciiDecToChar(i); } for (int i=0; i<=tamAlfabeto; i++) { repAlfabeto[i]=0; } for (int i=0; i<=tamAlfabeto; i++) { entropia[i]=0; } } public static char AsciiDecToChar(int leido) { // Método creado por: Grekz, http://grekz.wordpress.com // Produce: el caracter ascii asociado a dicho entero. return (char)leido; } { // Produce: El numero de ocurrencias del caracter en la cadena. int i=0; int num=cad.indexOf(caracter,0); while (num!=-1){ i=i+1; num=cad.indexOf(caracter,num); } return i; } public double calculaEntropia(int[] ocurrencias) { //Asigna a un array la entropía de un texto dadas las ocurrencias y su tamaño. //Modifica This double entr=0; double p=0; for (int i=0; i==tamAlfabeto; i++) { p=repAlfabeto[i]/tamTextoCifrado; if(p>0) } return entr; } { //Produce: Las frecuencias de un fichero. //Modifica: This. try { //Definimos el archivo y el buffer para la lectura. try{ while ((linea = br.readLine())!=null) { for(int i=0; i==linea.length(); i++) { repAlfabeto[i]=(contarOcurrencias(linea,alfabeto[i])); } tamTextoCifrado=tamTextoCifrado+linea.length(); } } } } }