Ajuda por favor pesquisa de expressões em ficheiros

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:

[code]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); 
	
}

}[/code]

Se alguém poder ajudar.

obrigado

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
}

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

[code] 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);   

}
}
}[/code]

Obrigado

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.

Ok.

Obrigado

:grin:

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

Obrigado