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

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