[ Foro de Java ]

Ejercicio 14.3.3

19-May-2015 02:35
Jose Manuel Illanes Juan
1 Respuestas

Buenas.

Tengo una duda sobre este ejercicio:

Crea un programa que pida al usuario el nombre de un fichero y una palabra a buscar en él. Debe mostrar en pantalla todas las líneas del fichero que contengan esa palabra.

Se hacer todo el programa, o al menos eso creo, salvo como hacer para saber si la palabra que el usuario ha escrito se encuentra dentro de la linea que en ese momento está leyendo el programa.Tengo el siguiente código:


import java.util.Scanner;
import java.io.*;

public class ejercicio14_3_3 {

	public static void main(String args[]){
		
		Scanner teclado = new Scanner (System.in);
		
/*primero pedimos al usuario el nombre del fichero donde debemos buscar la palabra*/
		
	System.out.println("Introduce el nombre del fichero que deseas abrir " +
			"para buscar una palabra en él:");
	String fichero = teclado.nextLine();
	
	if(!( new File(fichero)).exists)
	{
		System.out.println("No existe el fichero solicitado.");
		return;
	}
	
	System.out.println("Listos para leer del fichero.");
	
/*ahora preguntamos por la palabra que quiere buscar en el fichero*/
	
	System.out.println("Introduce la palabra que quieres buscar en el fichero:");
	String palabra = teclado.nextLine();
	
	try
	{
		BufferedReader ficheroEntrada = new BufferedReader (
				new FileReader (new File(fichero)));
	/*vamos leyendo linea a linea*/
		
		String linea = "null";
		
		while((linea = ficheroEntrada.readLine()) != null )
		{
			
	/*aqui tengo que meter el codigo para saber si la palabra introducida 
	 * por el usuario está en la cadena y en caso de que esté 
	 * imprimir en pantalla la linea completa. 	 */
		
			
		}
		
	}catch (IOException errorDeFichero)
	{
		System.out.println("Error de fichero "+
				errorDeFichero.getMessage());
	}
	
	}
}


Como veis sólo me falta la orden para saber si la palabra está en la linea. Llevo un tiempo pensándolo pero no se me ocurre nada.

Espero que me puedan ayudar, muchas gracias.


21-May-2015 09:50
Nacho Cabanes (+83)

En la clase String hay un método "contains" que te devuelve "true" si es cadena contiene una cierta subcadena:


if (linea.contains(palabra)) ...


Por cierto, cuidado con ese   String linea = "null";    Debería ser String linea = null;






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)