Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Exercício JAVA NIO File - Calcular quantas letras há no arquivo .txt

Bom dia!

Estou fazendo um exercício em JAVA cujo objetivo é ler um arquivo .txt de entrada e a quantidade de letras, vogais, consoantes e palavras dentro do arquivo. O algoritmo que eu escrevi cria os arquivos, mas o problema está na contagem dessas letras (é um problema de iniciantes, como eu haha)

Segue o código-fonte:

    FileWriter entrada = new FileWriter("entrada.txt");
    entrada.write("aaa cc\n");
    entrada.close();

    BufferedReader txt = new BufferedReader(new FileReader("entrada.txt"));
    String texto = txt.readLine();
    int espaço = 0;
    int consoante = 0;
    int vogal = 0;
    int letra = 0;
    int palavra = 0;
    while (txt.read() != -1) {
        for (int i = 0; i < texto.length(); i++) {
            if (texto.charAt(i) == ' ') {
                espaço++;
            } else if (texto.charAt(i) != 'a' & texto.charAt(i) != 'e' & texto.charAt(i) != 'i'
                    & texto.charAt(i) != 'o' & texto.charAt(i) != 'u') {
                consoante++;
                letra++;
            } else {
                vogal++;
                letra++;
            }
            if (i+1 < texto.length())
            if (texto.charAt(i + 1) == ' ') {
                palavra++;
            }
        }
    }

    FileWriter saida = new FileWriter("saida.txt");
    saida.write("Número de espaços: "+espaço+" \n");
    saida.write("Número de consoantes: "+consoante+" \n");
    saida.write("Número de vogais: "+vogal+" \n");
    saida.write("Número de letras: "+letra+" \n");
    saida.write("Número de palavras: "+palavra+" \n");
    saida.close();

Como podem ver, o texto que o algoritmo esta analisando é: “aaa cc” com uma quebra de linha no final. Mas o arquivo de saida imprime 0 para todos os valores, como se não encontrasse nenhuma letra. Alguém poderia me ajudar a solucionar este problema? Grato!

1 resposta
solução!

Bo noite, dois pontos impedem sua logica de funcionar...

String texto = null; //txt.readLine();
while ((texto = txt.readLine()) != null) {

Explicação: QUando voce fazia: txt.readLine la em cima, ele ja lia a linha e ja movia o cursor para a proxima linha, por isso ele nao entrava nunca no seu while, porque quando ele ia ler, ja estava posicionado na linha debaixo.

Para resolver isso, apenas modifiquei o local do readLine().

E o readLine() devolve null se nao encontrar texto.