Contador de palavras

9 respostas
P

Bom dia pessoal,estou tentando criar um contador de palavras em um arquivo txt,porém estou com problemas na saída da informação,deixarei o código.Desde já agradeço.

public static long contaPalavras(String linha){
      long numeropalavras=0;
      int indice = 0;
      boolean espacoembranco = true;
      while(indice < linha.length()){
         char c = linha.charAt(indice++);
         boolean espacoembrancoatual = Character.isWhitespace(c);
         if(espacoembranco && !espacoembrancoatual){
            numeropalavras++;
         }
         espacoembranco = espacoembrancoatual;
          System.out.println("O total de palavras é:"+contaPalavras(arquivo.txt));
      }
           return numeropalavras;

9 Respostas

A

Bom dia Paulo,

Tem um erro nesse while, você está chamando o System.out, dentro do while e chamando a função de contagem de novo.

Tenta tirar esse System.out de dentro do while e manda imprimir a a variável numeroPalavras. Não esquece que uma boa prática no Java é usar o camelCase.

P

Bom dia maverick,realmente percebo o quanto preciso aprender,estou iniciando no java por “agora”,obrigado pela sugestão,mas meu problema ainda persiste.Irei postar o código mais explícito agora,desculpas pois sou novo no fórum.Desde já agradeço sua boa vontade,segue o código:
O mesmo ainda persiste o erro de saída.

public static long contaPalavras(String linha){

long numeropalavras=0;

int indice = 0;

boolean espacoembranco = true;

while(indice < linha.length()){

char c = linha.charAt(indice++);

boolean espacoembrancoatual = Character.isWhitespace©;

if(espacoembranco && !espacoembrancoatual){

numeropalavras++;

}

espacoembranco = espacoembrancoatual;

}
return numeropalavras;


}

public static void main(String[] args) {
//Caixa de texto para solicitar o nome do arquivo(arquivo.txt)
    try{
String nome;

nome = JOptionPane.showInputDialog(null,Entre com o nome do arquivo);

BufferedReader br = new BufferedReader(new FileReader(nome));

while(br.ready()){

String linha = br.readLine();

System.out.println(linha);

}

br.close();

}catch(IOException ioe){

ioe.printStackTrace();

}
System.out.printf("CanRead: %s\n", diretorioArquivo().canRead());
    System.out.printf("CanWrite: %s\n", diretorioArquivo().canWrite());
    System.out.printf("Existe: %s\n", diretorioArquivo().exists());
    System.out.printf("IsFile: %s\n", diretorioArquivo().isFile());
    System.out.println("Total de espaços em branco: "+ totalEspacoBranco(diretorioArquivo()));
    System.out.println("Total de consoantes: "+ totalConsoantes(diretorioArquivo()));
    System.out.println("Total de vogais: "+ totalVogais(diretorioArquivo()));
    System.out.println("Total de letras: "+ medirTotalLetras(diretorioArquivo()));
    System.out.println("Total de linhas: "+ medirTotalLinhas(diretorioArquivo()));
    System.out.println("O total de palavras é:"+numeroPalavras(diretorioArquivo()));
A

Opa, sem problema,

Paulo, você pode aproveitar e colar a saída que você está tendo?

P

Bom dia maverick,firmeza man?
Não tive como responder ontem,essa vida corrida é complicada,mas enfim…
Colocarei a saída,o erro só se dá na contagem de palavras.

run:

A desigualdade social refere-se a processos relacionais na sociedade que tm o efeito de limitar ou prejudicar

prejudicar o status de um determinado grupo, classe ou crculo social. As reas de desigualdade social incluem o acesso aos direitos de voto, a liberdade de expresso e de reunio, a extenso dos direitos de propriedade e de acesso  educa��o, sade, moradia de qualidade, viajar, ter transporte, frias e outros bens e servios sociais. Alm de que tambm pode ser visto na qualidade da vida familiar e da vizinhana, ocupa��o, satisfa��o no trabalho e acesso ao crdito. Se estas divises econmicas endurecem, elas podem levar a desigualdade social.

CanRead: true

CanWrite: true

Existe: true

IsFile: true

Total de espaços em branco: 104

Total de consoantes: 265

Total de vogais: 250

Total de letras: 558

Total de linhas: 2

Exception in thread main java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: 

at paspoo.PasPoo.main(PasPoo.java:148)

C:\Users\C\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

FALHA NA CONSTRUÇÃO (tempo total: 16 segundos)
A

Isso é bem estranho, mesmo.

Será que a resposta desse Post te ajuda?

P

Agradeço sua boa vontade maverick,vou dar uma repassada no código e implementar outro método se possivel, mas de qualquer forma deixarei o código.O criei para contar o total de espaços em branco,consoantes,vogais,letras,linhas e palavras de um arquivo txt.

package paspoo;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;
import java.util.ArrayList;

import java.util.Calendar;

import javax.swing.JOptionPane;

public class PasPoo {

public static File diretorioArquivo(){
    File localArquivo = new File("arquivo.txt");
    return localArquivo;
}
public static BufferedReader prepararArquivo(File arquivo) {

    BufferedReader texto = null;
 
    
    try {

        FileReader leitor = new FileReader(diretorioArquivo());
        texto = new BufferedReader(leitor);

    } catch (Exception e) {
        
        System.out.println("Erro ao preparar arquivo.");
    }
    return texto;

}
public static int medirTotalLinhas(File arquivo){
    int totalLinhas = 0;
    BufferedReader texto = prepararArquivo(arquivo);
    try {
        while (texto.ready()) {
            texto.readLine();
            totalLinhas++;
        }
    }catch (Exception e){
        System.out.println("Erro ao medir total de linhas.");
    }
    return totalLinhas;
}
public static int medirTotalLetras(File arquivo){
    int totalLetras = 0;
    String letras = "";
    BufferedReader texto = prepararArquivo(arquivo);
    try {
        while (texto.ready()) {
            letras = texto.readLine();
            totalLetras += letras.replaceAll(" ","").length();
        }
    }catch (Exception e){
        System.out.println("Não foi possível medir o total de letras.");
    }

    return totalLetras;
}
public static int totalVogais(File arquivo){
    int totalVogais = 0;
    String vogais = "";
    BufferedReader texto = prepararArquivo(arquivo);
    try {
        while (texto.ready()) {
            vogais = texto.readLine();
            totalVogais += vogais.replaceAll("[^aeiou]","").length();
        }
    }catch (Exception e){
        System.out.println("Não foi possível medir o total de vogais.");
    }
    return totalVogais;
}
public static int totalConsoantes(File arquivo){
    int totalConsoantes = 0;
    String consoantes = "";
    BufferedReader texto = prepararArquivo(arquivo);
    try {
        while (texto.ready()) {
            consoantes = texto.readLine();
            totalConsoantes += consoantes.replaceAll("[^bcdfghjklmnpqrstvxywv]","").length();
        }
    }catch (Exception e){
        System.out.println("Não foi possível medir o total de consoantes.");
    }
    return totalConsoantes;
}
public static int totalEspacoBranco(File arquivo){
    int totalEspacoBranco = 0;
    String espacosEmBranco = "";
    BufferedReader texto = prepararArquivo(arquivo);
    try {
        while (texto.ready()) {
            espacosEmBranco = texto.readLine();
            totalEspacoBranco += espacosEmBranco.replaceAll("[^ ]","").length();
        }
    }catch (Exception e){
        System.out.println("Não foi possível medir o total de espaços em branco.");
    }
    return totalEspacoBranco;
}
 public static long totalPalavras(String linha){
  long numeropalavras=0;
  int indice = 0;
  boolean espacoembranco = true;
  while(indice < linha.length()){
     char c = linha.charAt(indice++);
     boolean espacoembrancoatual = Character.isWhitespace(c);
     if(espacoembranco && !espacoembrancoatual){
        numeropalavras++;
     }
     espacoembranco = espacoembrancoatual;
  }
       
  return numeropalavras;


}

public static void main(String[] args) {
//Caixa de texto para solicitar o nome do arquivo(arquivo.txt)
    try{
String nome;

nome = JOptionPane.showInputDialog(null,Entre com o nome do arquivo);

BufferedReader br = new BufferedReader(new FileReader(nome));

while(br.ready()){

String linha = br.readLine();

System.out.println(linha);

}

br.close();

}catch(IOException ioe){

ioe.printStackTrace();

}
System.out.printf("CanRead: %s\n", diretorioArquivo().canRead());
    System.out.printf("CanWrite: %s\n", diretorioArquivo().canWrite());
    System.out.printf("Existe: %s\n", diretorioArquivo().exists());
    System.out.printf("IsFile: %s\n", diretorioArquivo().isFile());
    System.out.println("Total de espaços em branco: "+ totalEspacoBranco(diretorioArquivo()));
    System.out.println("Total de consoantes: "+ totalConsoantes(diretorioArquivo()));
    System.out.println("Total de vogais: "+ totalVogais(diretorioArquivo()));
    System.out.println("Total de letras: "+ medirTotalLetras(diretorioArquivo()));
    System.out.println("Total de linhas: "+ medirTotalLinhas(diretorioArquivo()));
    //System.out.println("O total de palavras é:"+totalPalavras(diretorioArquivo()));
//data

System.out.println(Calendar.getInstance().getTime());

//ano

System.out.println(Calendar.getInstance().get(Calendar.YEAR));

//mes

System.out.println(Calendar.getInstance().get(Calendar.MONTH));
}

private static String contarPalavras(File diretorioArquivo) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}

Forte abraço man.

A

Eu trocaria esse pedaço por:

public static int medirTotalLinhas(File arquivo){
    int totalLinhas = 0;
    BufferedReader texto = prepararArquivo(arquivo);
    try {
        while (texto.readLine() != null) {
            totalLinhas++;
        }
    }catch (Exception e){
        System.out.println("Erro ao medir total de linhas.");
    }
    return totalLinhas;
}
P

Show meu camarada,bem mais legível!
Obrigado!
Já sabe né,começando agora,a estrada é árdua…Ahahahahaha
Abraços

A

O caminho é esse mesmo a experiência, escrevendo, revisando e tendo o nosso código revisado faz com que sejamos melhores. Melhoria continua não vale só pra código vale também para desenvolvedor.

Qualquer coisa é só falar, abraços!

Criado 20 de setembro de 2016
Ultima resposta 21 de set. de 2016
Respostas 9
Participantes 2