Ajuda por favor pesquisa de expressões em ficheiros

4 respostas
B

Boa tarde

Tenho um exercício para fazer que é criar um programa para realizar pesquisas em ficheiros,
se a expressão existir no ficheiro deve ser indicada a linha ou linhas onde se encontra, caso contrário
deve ser indicado que a expressão não foi encontrada. talvez utilizando o método indexOf ou o contains????

respeitando o seguinte esboço:

dados pedidos ao utilizador

Ficheiro: dados.txt
Expressão: rolha

o ficheiro dados.txt contem a expressão rolha na linha 2.

Exemplo de conteúdo do ficheiro:

o rato roeu
a rolha da garrafa
de rum do rei da Rússia .

Como sou novo nisto apenas consigo fazer o seguinte:

import java.io.*;

public class LeFicheiro {


	public static void main(String[] args) throws Exception {
	

		BufferedReader teclado = new BufferedReader(
				new InputStreamReader (System.in));

		String file,expressao;
		
		System.out.println("PESQUISA DE EXPRESSÕES EM FICHEIROS");
		
		System.out.println("Ficheiro: ");
		file = teclado.readLine();
		
		BufferedReader input = new BufferedReader(new InputStreamReader( 
				new FileInputStream(new File(file))));
		
		System.out.println("Expressão a pesquisar: ");
		
		
		int pesquisa = file.indexOf(teclado.readLine());
	    
	    if(pesquisa == -1)
	        System.out.println("O valor pesquisado não foi encontrado.");
	      else
	        System.out.println("O valor foi encontrado no índice: " + pesquisa); 
		
	}

}

Se alguém poder ajudar.

obrigado

4 Respostas

F

Vc está pesquisando em cima do teclado e não no conteúdo do arquivo. Para isto deves iterar sobre cada
linha do BufferedReader, assim:

String line = null;
int lineCount = 0;
while ((line = input.readLine()) != null) {
	lineCount++;
	// iterando sobre cada linha
}
B

Então fica algo deste género. Corrige-me se estiver errado.

import java.io.* ; 
 public class Le {  
   
       public static void main(String[] args) throws Exception {  
         
     
           BufferedReader teclado = new BufferedReader(  
                   new InputStreamReader (System.in));  
           
           BufferedReader input = new BufferedReader(new InputStreamReader(   
                   new FileInputStream(new File("teste.txt"))));  
           
           String file,expressao;  
             
           System.out.println("PESQUISA DE EXPRESSÕES EM FICHEIROS");  
             
           System.out.println("Ficheiro: ");
           file = teclado.readLine();
           String line = null;  
           int lineCount = 0;  
           while ((line = input.readLine()) != null) {  
               lineCount++;      
                
          System.out.println("Expressão a pesquisar: "); 
          
           int pesquisa = input.readLine().indexOf(teclado.readLine());  
             
           if(pesquisa == -1)  
               System.out.println("O valor pesquisado não foi encontrado.");  
             else  
              System.out.println("O valor foi encontrado no índice: " + pesquisa);   
             
  }  
   } 
    }

Obrigado

F

Não, ali quando vc faz

int pesquisa = input.readLine().indexOf(teclado.readLine());

Estas lendo uma linha somente.

Primeiro vc deve perguntar a expressão e depois sim, usar o while que le linha por linha e aplicar o indexOf em cada linha.
Só cuidado pois o padrão pode repetir.

B

Ok.

Obrigado

:grin:

PS. já agora será que não podes ver o meu outro post sobre o calculo de médias?

Obrigado

Criado 22 de julho de 2009
Ultima resposta 23 de jul. de 2009
Respostas 4
Participantes 2