Opa
Preciso fazer um programa que conte quantas letras de cada tem um texto em txt, doc ou pdf, por exemplo: letra a 50 vezes, letra b 20 vezes, etc.
Mas nao tenho idéia de como faz isso, podem me dar uma mão? valeu
gatts, podes ler o arquivo e a cada linha faz uma procura usando StringTokenizer, ai é so coloca a logica pra contar as letras.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html
Falos.
Uma maneira bem eficiente é criar um vetor de inteiros com tamanho 256, considerando a tabela ASCII com 256 elementos…
Cada indice do vetor representa um valor em ASCII.
Inicialize os 256 elementos do vetor para zero.
Vc vai lendo caracter por caracter do arquivo, dá um cast para int e faz
++vetor[(int)caracterAtual];
Quando isso acabar vc terá a quantidade de cada caracter da tabela ASCII presente no seu arquivo…
tenta implementar, qualquer dúvida dá um toque!
Abraço!
bom, em doc ja fica mais complicado, mas em TXT voce so precisa ler o arquivo e criar um dicionário de repetição:
//leia o arquivo aqui linha a linha
String linha = "este eh um exemplo de uma linha lida do seu arquivo";
HashMap<Character, Integer> dic = new HashMap<Character, Integer>();;
for(int i = 0; i < linha.length(); i++) {
Character key = new Character(linha.charAt(i));
if (!dic.containsKey(key)) {
dic.put(key, new Integer(0));
}
Integer numero = dic.get(key);
numero = new Integer(numero.intValue()+1);
dic.put(key, numero);
}
Set<Character> lista = dic.keySet();
for (Character character : lista) {
System.out.println(character.toString()+": " + dic.get(character).toString());
}
espero ter ajudado…
Pense em usar um hash…
String frase = "afgfghsldfghrtyrewot";
HashMap m = new HashMap();
char [] all = frase.toCharArray();
for(int i=0; i< all.length ; i++) {
Integer x = (Integer) m.get(""+all[i]);
if (x==null) x = new Integer(0);
Integer y = new Integer(x.intValue() + 1);
m.put(""+all[i],y);
}
Claro, existem outras formas de fazer - esta eu fiz as pressas… ta horribel
valeu, vo dar uma testada e ver o qq dá