Contar letras

Olá!
Estou tentar contar todas as ocorrencias de todas as letras do alfabeto(minusculas), num texto ou frase.

Por exemplo: Miguel
Output: a = 0
b = 0
.
.
e = 1
por ai fora.

	int contador = 0;
	int [] tabela = new int[26];
	int a = 0;	
        char letra = 'a';

	for(int j = 0; j< 26;j++) {

           // Imaginando  que esta a ler de um ficheiro
      	    while((fich = in.readLine())!= null) {

	    for(int i = 0; i < fich.length();i++) {

		if(fich.charAt(i) == letra)

		    contador ++; 
	    }
	}

	    tabela[a++] = contador;      
	    letra++;
	    contador = 0;

	}	

	    for(int i = 0;i < tabela.length;i++) {

		System.out.println(tabela[i]);
	    }

Faço um ciiclo for que vai executar aquele pedaço de codigo 26 vezes pois o alfabeto tem 26 letras.
Corro o texto até ao fim à procura da letra ‘a’ e vou incrementado o contador.
No fim de incrementar a letra adiciona o contador a uma tabela.
No fim incremento a letra e ponho o contador a zeros, para iniciar a contagem do ‘b’;

Problema: Só me está a contar o ‘a’
Gostaria que me ajudassem.

Obrigado

Tente assim:

[code]while ((fich = in.readLine()) != null) {

for (int i = 0; i < fich.length(); i++) {

	if ((int)fich.charAt(i) >= 97 &&
		(int)fich.charAt(i) <= 122)
			contador++;
	}
}

tabela[a++] = contador;
letra++;
contador = 0;

}

for (int i = 0; i < tabela.length; i++) {
System.out.println(tabela[i]);
}[/code]
[b]Obs.: O 97 representa a letra ‘a’ e o 122 a letra ‘z’.

[/b]

Assim não dá.

O ciclo conta o numero de vezes da letra ‘a’ e adiciona à primeira posição da tabela.
Depois incrementa a letra(passa a ser a letra b), conta-a e adiciona à segunda posição da tabela.
O ciclo faz isto 26 vezes, ou seja, vai de a até z.

Só está a contar a letra ‘a’.