Ir ao conteúdo
  • Cadastre-se

Java CONTAR palavras em java?


luiz_l

Posts recomendados

ola pessoas
Sou iniciante em progamacao java eu estou com problema em executar meu codigo

primeiramente eu tenho abrir dois arquivoTxt no java e contar quantas palavras tem em cada arquivo e dps comparar qual dos arquivo tem mais palavras:
também tenho que instanciar os dois arquivo TXT em somente uma classe chamada arquivoComparar.

o meu primeiro problema é que nao consigo contar as palavras em somente um arquivo txt. preciso de um exemplo de como contar palavras para poder avancar nos outros objetivos.

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

//import arquivatura.ex;


public class Texto {
				private int tam;
				private static String conteudo;
				
				
				public int getTam() {
					
					return tam;
				}
				
				public void setTam(int tam) {
					this.tam = tam;
				}
				
				
				
		public static String getConteudo() {
					return conteudo;
				}



				public static void setConteudo(String conteudo) {
					Texto.conteudo = conteudo;
				}



		public void LerTexto() {
			String linha;
					try {
						FileReader fr;
						fr =new FileReader("CaminhodoArquivo");
						
						BufferedReader bf;
						bf= new BufferedReader(fr);
						
						
						linha = bf.readLine();
						while(linha!=null) {
					
							System.out.println(linha);
							linha=bf.readLine();
							tam++;
						
						}
						System.out.println(tam);
						
						
					}catch (Exception e) {
						System.out.println("Error"+e.getMessage() );
					}
					
				
					
					
				}

 

Link para o comentário
Compartilhar em outros sites

modifiquei mas
ainda nao consigo contar as palavras

public void LerTexto() {
			String linha;
			 int ccount= 0;
			 int tam=0;
					try {
						FileReader fr;
						fr =new FileReader("texto.txt");
						
						BufferedReader bf;
						bf= new BufferedReader(fr);
						
						
						linha = bf.readLine();
						linha.charAt(ccount++) ;
						
						while(linha!=null) {
					
							System.out.println(linha);
							linha=bf.readLine();
							//tam++;
							
						}
						
						for(int i=0;i<linha.charAt(ccount);i--) {
							//ccount++;
						}
					
						 System.out.println(ccount);
					}catch (Exception e) {
						System.out.println("Error"+e.getMessage() );
					}
					
				
					
					
				}

 

Link para o comentário
Compartilhar em outros sites

valeu pela ajuda Adriano mas

eu contei por palavras por outro jeito, porém nao conseguindo usar comparable para comparar quais do texto tem mais palavras.

import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;

    public class orginalText implements Comparable<orginalText> {
    	 
    	int contPalavrasArquivo = 0;

    	
    public int getContPalavrasArquivo() {
    		return contPalavrasArquivo;
    	}

    	public void setContPalavrasArquivo(int contPalavrasArquivo) {
    		this.contPalavrasArquivo = contPalavrasArquivo;
    	}

    public int LerTexto() {
    	
            String linha;
            int contPalavrasPorLinha;
           int contPalavrasArquivo = 0;
            
            
            try  {
            	FileReader fr;
    			fr =new FileReader("C:/Users/luize/Desktop/texto.txt");
    			
    			BufferedReader bf;
    			bf= new BufferedReader(fr);
                linha = bf.readLine();

                while ( linha != null ) {

                    

                    
                    linha = linha.trim();

                    
                    if ( !linha.isEmpty() ) {

                       
                        contPalavrasPorLinha = 1;
                        
                        linha = linha.replaceAll( "\\s+", " " );

                       
                        for ( int i = 0; i < linha.length(); i++ ) {
                            if ( linha.charAt( i ) == ' ' ) {
                                contPalavrasPorLinha++;
                            }
                        }
                        
                        
                       //    System.out.println(linha);

                        contPalavrasArquivo += contPalavrasPorLinha;

                    }

                    linha = bf.readLine();

                }

                System.out.println( contPalavrasArquivo );
                
            } catch ( IOException e ) {
                System.out.println( "Erro: " + e.getMessage() );
            }
            
            return contPalavrasArquivo;

        }

    public int LerTexto2( ) {
        
        String linha;
        int contPalavrasPorLinha;
        int contPalavrasArquivo = 0;
        
        
        try  {
        	
        	FileReader fr;
    		fr =new FileReader("C:/Users/luize/Desktop/texto2.txt");
    		
    		BufferedReader bf;
    		bf= new BufferedReader(fr);
            linha = bf.readLine();
            
            while ( linha != null ) {

                

                
                linha = linha.trim();

                
                if ( !linha.isEmpty() ) {

                   
                    contPalavrasPorLinha = 1;
                    
                    linha = linha.replaceAll( "\\s+", " " );

                   
                    for ( int i = 0; i < linha.length(); i++ ) {
                        if ( linha.charAt( i ) == ' ' ) {
                            contPalavrasPorLinha++;
                        }
                    }
                    
                    
                      // System.out.println(linha);

                    contPalavrasArquivo += contPalavrasPorLinha;

                }

                linha = bf.readLine();

            }

           System.out.println(contPalavrasArquivo );
            
        } catch ( IOException e ) {
            System.out.println( "Erro: " + e.getMessage() );
        }
        
        return contPalavrasArquivo;

    }
    						
    		@Override
    				public int compareTo(orginalText tex) {
    			if(this.contPalavrasArquivo > tex.getContPalavrasArquivo() ) {
    				return -1;
    		}else if (this.contPalavrasArquivo < tex.getContPalavrasArquivo() ) {
    				return 1;
    		}
    	
    								return 0;
    }

    		@Override
    		public String toString() {
    			return "orginalTex" + " LerTexto()=" + LerTexto()
    					+ ", LerTexto2()=" + LerTexto2() + "]";
    		}

    	
    }


import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;

import java.util.Collections;
import java.util.List;
public class OriginalTextTest {

	  public static void main( String[] args ) {
	      	 
		  try {
			  //orginalText [] t =new orginalText[2];
				
			  ArrayList<orginalText> listaDeTexto = new ArrayList<>();
			  orginalText t1 = new orginalText ();
			//  orginalText t2 = new orginalText ();
				
			  listaDeTexto.add(t1);
			 // listaDeTexto.add(t2);
				
			  System.out.println(listaDeTexto);
				
				
				System.out.println("------------------------------");
			  
			
				Collections.sort(listaDeTexto);
				System.out.println(listaDeTexto);
			
			}
			catch ( ArrayIndexOutOfBoundsException e) {
				System.err.println("Informe tres arquivos para comparacao.");
			}

 

Link para o comentário
Compartilhar em outros sites

Algumas coisas:

  1. Suas classes possuem um alto acoplamento entre seus métodos, isso nem sempre é algo bom.
  2. A lógica que você usou está demasiadamente complexa.

Algumas dicas:

  1. Procure definir funções bem específicas para seus métodos.
  2. Procure deixar seus métodos o mais independente quanto possível, isso diminui o acoplamento, facilitando a manutenção futura no seu código.

Compare com esse código:

Texto.java

Spoiler

package contarpalavrasoriginal;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Objects;

public class Texto implements Comparable<Texto> {

    private Path arquivo;
    private String conteudo;
    private int palavras;

    public Texto() {
        this.arquivo = null;
        this.conteudo = "";
        this.palavras = 0;
    }

    public Texto(Path arquivo) {
        this();
        setArquivo(arquivo);
    }

    public Path getArquivo() {
        return arquivo;
    }

    /**
     * Seta um novo arquivo e atualiza os demais atributos.
     *
     * @param arquivo Arquivo que será setado.
     *
     * @throws IllegalArgumentException Se o arquivo não for encontrado.
     * @throws NullPointerException     Se o objeto for null.
     */
    public void setArquivo(Path arquivo) throws IllegalArgumentException, NullPointerException {
        if (arquivo == null) {
            throw new NullPointerException("Arquivo não pode ser null.");
        } else if (Files.notExists(arquivo)) {
            throw new IllegalArgumentException("Arquivo não encontrado.");
        }

        this.arquivo = arquivo;
        this.conteudo = lerArquivo();
        this.palavras = contarPalavras();
    }

    public String getConteudo() {
        return conteudo;
    }

    public int getPalavras() {
        return palavras;
    }

    private String lerArquivo() {
        StringBuilder builder = new StringBuilder();

        try {
            List<String> linhas = Files.readAllLines(arquivo);
            linhas.forEach(s -> builder.append(s).append(System.lineSeparator()));

            // Remove o último separador de linha
            builder.deleteCharAt(builder.length() - 1);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return builder.toString();
    }

    private int contarPalavras() {
        return conteudo.split("\\s").length;
    }

    @Override
    public String toString() {
        return "Texto{" +
                "arquivo='" + arquivo + "'" +
                ", palavras=" + palavras +
                '}';
    }

    @Override
    public int compareTo(Texto o) {
        Objects.requireNonNull(o, "Objeto não pode ser null.");
        return Integer.compare(palavras, o.palavras);
    }
}

 

 

TextoTest.java

Spoiler

package contarpalavrasoriginal;

import java.nio.file.Paths;

public class TextoTest {

    public static void main(String[] args) {
        Texto texto1 = new Texto(Paths.get("C:/Users/luize/Desktop/texto.txt"));
        Texto texto2 = new Texto(Paths.get("C:/Users/luize/Desktop/texto2.txt"));
        
        int resultado = texto1.compareTo(texto2);

        if (resultado > 0) {
            System.out.println(texto1);
        } else if (resultado < 0) {
            System.out.println(texto2);
        } else {
            System.out.println(texto1);
            System.out.println(texto2);
        }

        System.exit(0);
    }
}

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Quero agradecer há todos vcs de coraçao que tiveram a paciência em me ajudar.

Codigo Feito:

package teste.contarpalavrastexto;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class LerTexto2  implements Comparable<LerTexto2>  {
	
	private String arquivo;
	private int totalPalavras;
	
	
	
	public int getTotalPalavras() {
		return totalPalavras;
	}
	public void setTotalPalavras(int totalPalavras) {
		this.totalPalavras = totalPalavras;
	}
	
	
	public int getQtdPalavras() {
        return totalPalavras;
        }
	
	
	
	public LerTexto2(String arquivo) {
		this.arquivo = arquivo;
	}
	public int contarPalavras() {
		
		try {
			FileReader arq = new FileReader(this.arquivo);
			BufferedReader lerArq = new BufferedReader(arq);

			this.totalPalavras = 0;
			String linha = lerArq.readLine();
			
			totalPalavras += linha.split(" ").length;

			while (linha != null) {
				linha = lerArq.readLine();

				if (linha != null) {
					totalPalavras += linha.split(" ").length;
				}
			}

			arq.close();
			//System.out.println(totalPalavras);
			return totalPalavras;
	    } catch (IOException e) {
	        System.err.printf("Erro na abertura do arquivo: %s.\n", e.getMessage());
	    }

		return 0;
	}

	@Override
	public int compareTo(LerTexto2 tex) {
		if( this.totalPalavras < tex.getQtdPalavras() ) {
			return -1;
	}else if (this.totalPalavras > tex.getQtdPalavras()  ) {
			return 1;
	}
		
		
		
		return 0;
	}
	@Override
	public String toString() {
		return "Texto"+"["+contarPalavras()+"]";
	}
	
	

}

Main2

 

import java.util.ArrayList;
import java.util.Collections;

public class Main2 {

	public static void main(String[] args) {
       

		try {
			
		ArrayList<LerTexto2> ListaDeTexto = new ArrayList<LerTexto2>();
		 LerTexto2 t1 = new LerTexto2("C:/Users/Genus/Desktop/texto.txt");
		 LerTexto2 t2 = new LerTexto2("C:/Users/Genus/Desktop/texto2.txt");
		 LerTexto2 t3 = new LerTexto2("C:/Users/Genus/Desktop/texto3.txt");
		 		 
		 ListaDeTexto.add(t1);
		 ListaDeTexto.add(t2);
		 ListaDeTexto.add(t3);

		 	 
		 System.out.println("Lista Desordenada");		 
		 System.out.println( ListaDeTexto );		 
		 System.out.println("---------------------------------------");
		 Collections.sort(ListaDeTexto);
		 System.out.println("Lista Ordenada");
		 System.out.println(ListaDeTexto);
		  
		
		}
		catch ( ArrayIndexOutOfBoundsException e) {
			System.err.println("Informe tres arquivos para comparacao.");
		}
		
		
		
	}

	

}

 

@AdrianoSiqueira o codigo que você disponibilizou pra download é show e nao conhecia o HashMap e a contagem de palavras funcionou.

Nesse trabalho era obrigatorio usar Compare to na classe comparartexto, instanciar dois arquivo txt e contar sua palavras em uma classe chamada comparartexto.

Por isso nao usei hasmap

Obrigado por me Ajudar 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...