Ir ao conteúdo

Posts recomendados

Postado

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() );
					}
					
				
					
					
				}

 

Postado

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() );
					}
					
				
					
					
				}

 

Postado

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.");
			}

 

Postado

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
Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!