Não consigo entender (achar) o que está errado

Olá. Preciso de ajuda para encontrar o que estou fazendo de errado.

Uma rotina para fazer a contagem (soma) de quantos níveis há registrados num TXT, porém não estou conseguindo um bom resultado, simplesmente não funciona e não estou conseguindo ACHAR onde estou errando.

O TXT:
1#PALAVRA1#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
1#PALAVRA2#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
2#PALAVRA3#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
3#PALAVRA4#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
1#PALAVRA5#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
3#PALAVRA6#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
2#PALAVRA7#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
1#PALAVRA8#100#Dica_01#-20#Dica_02#-30#Dica_03#-40
1#PALAVRA9#100#Dica_01#-20#Dica_02#-30#Dica_03#-40

A Rotina:

//=============================
public void ContarNiveis() {
    int qtdeNiveis = 0;
    int  facil = 0;
    int medio = 0;
    int dificil = 0;

    if (lblnCategorias.getText()!="00000") {
        try {
            String NomeArq = ComboCategoria.getSelectedItem() + ".txt";
            File ArquivoDePalavras  = new File(caminho + "//" + NomeArq);
            FileReader leitor = new FileReader(ArquivoDePalavras);
            try (BufferedReader leitorBuf = new BufferedReader(leitor)) {
                    matNivel.clear();               //limpa o temporaio que aramzena o nível
                    String linha = null;            //prepara para as leituras do arquivo
                    int n = 0;
                    while ((linha = leitorBuf.readLine()) != null) {//ler até o final do arquivo
                        String colunas[] = linha.split("#"); //lê uma linha do arquivo
                        matNivel.add(colunas[0]);   //coloca o 'split' nesta coluna
                        
                        if ( matNivel.get(n).equals("1") ) {  facil   = facil   + 1;               }
                        if ( matNivel.get(n).equals("2") ) {  medio   = medio   + 1;        }
                        if ( matNivel.get(n).equals("3") ) {  dificil = dificil + 1;                }
                        
                        qtdeNiveis++; n++;
                    }
                    
                    lblmsgJogador.setVisible(true);
                    
                    if ((facil + medio + dificil) < 0) {
                        lblmsgJogador.setForeground(Color.red);
                        lblmsgJogador.setText(NomeJogador + " problemas no arquivo");
                    } else {
                        lblmsgJogador.setForeground(Color.white);
                        lblmsgJogador.setText(NomeJogador + " Nível (Fácil, Médio ou Difícil)");
                        lblFacil.setText(facil);
                        lblMedio.setText(medio);
                        lblDificil.setText(dificil);
                        
                        //controlaBtnNivel();
                    }
                    
                    lblnPalavras.setText(qtdeNiveis );
                }
                catch(IOException ex) {
                    System.out.println("Erro: "+ ex.toString());
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(frmBase.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
}

O problema está em que esses 3 ifs mão estão recebendo os valores.
O split deve capturar exatamente a parte inicial de cada linha lida no TXT, onde se pode ver os NIVEIS que deverão ser contados e exibidos conforme a rotina.

  if ( matNivel.get(n).equals("1") ) {  facil   = facil   + 1;               }
  if ( matNivel.get(n).equals("2") ) {  medio   = medio   + 1;        }
  if ( matNivel.get(n).equals("3") ) {  dificil = dificil + 1;                }

Para ajudar na visualização do que preciso:

image

Veja abaixo das palavras Fácil, Médio, e Difícil ha alguns textbox que receberao os valores contados nesta rotina.

Obrigado.

De coraçao, conselho usar a lib sqlite, seu desenvolvimento vai fluir bem mais para este caso.

kkk.
Mas ja ta tudo pronto!!! :smile:

thanks, ja to resolvendo.