elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Saber cuántas veces se repiten letras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Saber cuántas veces se repiten letras  (Leído 11,657 veces)
Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Saber cuántas veces se repiten letras
« en: 24 Abril 2016, 23:04 pm »

Hola, buenas. Ando buscando la forma de saber cuántas letras del abecedario se repiten en cualquier archivo de texto que se lea en el programa. Ya hice la parte lectora del archivo, pero no se cómo contar las letras e imprimir el número de veces que se repite cada una.

Entonces, lo que tengo hasta ahora es esto:


*La idea es examinar el archivo (Hecho)
*Después Leerlo e imprimirlo (Hecho)
*Lo tercero es crear la frecuencia de letras, osea, cuántas veces sale "a", cuantas "b", etc. e imprimirlo en un JOptionPane o en una gráfica.(No Hecho)

Alguna sugerencia para llevar acabo la tercera parte??

Gracias de antemano !

Aquí el programa por si es necesario una revisión:
https://mega.nz/#!CJYVVRwI!MTb-vq_NBvxia7ZibDJoiE2YwmoVtPEOOEu4D_NxTsU


« Última modificación: 24 Abril 2016, 23:07 pm por Antoniio » En línea

LaiaxanIV

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Saber cuántas veces se repiten letras
« Respuesta #1 en: 25 Abril 2016, 00:32 am »

Crea un array con tantas posiciones como letras del abecedario haya. Una vez, solo tienes que sumar uno a cada posición siempre que aparezca. Si restas a un char a, tendrás la posición que ocupa en tu array.
Ejemplo:
Código
  1. int[] cont = new int[25]; //Inicialo a 0 tmbien
  2. String texto = "hola"; //Si el texto tiene mayúsculas, asegurate de hacer la comprobación
  3. for(int i = 0; i < s.size(); ++i){
  4.   ++cont[(Integer)s.charAt(i)-'a']; //Lo que haces es usar la posición en la tabla ascii. Al restarle la a que es la letra que ocupa la primera posición del abecedario, tendrás la posción que ocupa.
  5. }
  6.  


En línea

Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Saber cuántas veces se repiten letras
« Respuesta #2 en: 25 Abril 2016, 08:10 am »

Pero no se leerá un String declarado, lo que se debe leer es cualquier txt que tenga en la pc..
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Saber cuántas veces se repiten letras
« Respuesta #3 en: 25 Abril 2016, 12:15 pm »

Pero no se leerá un String declarado, lo que se debe leer es cualquier txt que tenga en la pc..

Cita de: Antoniio
*La idea es examinar el archivo (Hecho)
*Después Leerlo e imprimirlo (Hecho)

Dices que ya lo has leído. Pues solo tienes que volcar el contenido en el String. En caso de que no lo quieras volcar todo de golpe, ve leyendo partes, y aplicándole el algoritmo ya mencionado.

Acerca del algoritmo arriba mencionado, cuidado, porque si lees un caracter que no sea una letra minúscula, te dará excepción. Lo mejor es que uses algo como HashMap<Character,Integer> para guardar las ocurrencias de cualquier caracter.
En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: Saber cuántas veces se repiten letras
« Respuesta #4 en: 26 Abril 2016, 00:01 am »

que vas a leer del archivo txt? leeras string

pero no leeras solo un string asi que tienes que utilizar iteradores para leer todos los strings del txt
En línea

Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Saber cuántas veces se repiten letras
« Respuesta #5 en: 26 Abril 2016, 05:40 am »

Bien, hice esto:

Código:
    try{
        FileReader fr = new FileReader(cajaTexto.getText());
        BufferedReader br = new BufferedReader(fr);
        String texto;
        while((texto=br.readLine())!=null){
           System.out.println(texto);
        }
        int c = 0;
        for(int i=0;i<texto.length();i++) {
          if ((texto.charAt(i)=='a')){
            c++;
  }
    System.out.println(  "La letra (a) se repite " + c + " veces en el archivo.");       
}
       
        }catch(Exception ex){}
    }             


Sería sólo para la letra "a" , entonces tendría que hacer un ciclo para cada letra del abecedario D:
En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: Saber cuántas veces se repiten letras
« Respuesta #6 en: 27 Abril 2016, 19:32 pm »

coloca en un arreglo {a,b,......z} e itera sobre este arreglo

y no asi solamente sobre 'a'

se solucionaria ??
En línea

Antoniio

Desconectado Desconectado

Mensajes: 121



Ver Perfil
Re: Saber cuántas veces se repiten letras
« Respuesta #7 en: 27 Abril 2016, 20:00 pm »

Exacto, ya lo tengo ! :3

Gracias !!!
En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: Saber cuántas veces se repiten letras
« Respuesta #8 en: 27 Abril 2016, 23:03 pm »

de nada y que te vaya bien!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines