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:
Veja abaixo das palavras Fácil, Médio, e Difícil ha alguns textbox que receberao os valores contados nesta rotina.
Obrigado.