Ayuda comparar Strings

Andres Escobar
04 de Diciembre del 2005
Estoy aprendiendo a usar JAVA solo por concer el lenguaje ... Sólo que estoy un poco atorado porque no he podido hacer lo siguiente:

Tengo un Array de String con palabras reservadas de JAVA:

String [] palabras = {"while", "for", "do", "if", "else", "case", "try", "catch", "finally"};

luego, estoy leyendo un archivo .txt el cual tiene una serie de palabras entre las cualres están algunas de las que defini en el Array anterior.

ahora, lo que quiero que haga es, que el programa lea palabra por palabra del archivo de texto, y que cuando encuentre la primera palabra la tome y la compare con el array, si es igual a alguna de las que tiene el array, me guarde esa palabra en otro Array si no es igual, que pase a la siguente palabra y vuelva a comparar..... cuando termine de hacer ese procediemiento con cada una de las palabras del txt, me despliegue en pantalla las palabras que coincidieron ...

Mi GRAN DUDA ES: ¿Cómo le hago para que al momento de encontrar un espacio en blanco entre palabras, corte la lectura y tome la palabra leida.....para compararla con el Array ... eso es lo que me está deteniendo ...

De antemano: GRACIAS POR SU AYUDA ....

Colladox
04 de Diciembre del 2005
Hola amigo, lo mejor es que utilizes la clas StringTokenizer, a la cual le pasas una cadena y el caracter que quieres utilizar como separador y te devuelve cada uno de los tokens que contiene la cadena. Por ejemplo dada la cadena \\\\\\\"HOla como estás\\\\\\\" utilizando el espacio en blanco como separador te devolvería los tokens HOla, como y estás.

Entonces leerías el fichero línea por línea con un BufferedReader y para cada línea le aplicarías el StringTokenizer.

Aquí te pongo el código:

import java.io.*;
import java.util.StringTokenizer;

public class ParserTxt
{
public static void main(String args[])
{
if(args.length != 1)
{
System.err.println(\\\\\\\"USO java ParserTxt <fichero>\\\\\\\");
System.exit(0);
}
String name = args[0];
new ParserTxtImpl(name);
}
}

class ParserTxtImpl
{
private BufferedReader input = null;

public ParserTxtImpl(String path)
{
InputStreamReader inputR = new InputStreamReader(ParserTxt.class.getResourceAsStream(path));

input = new BufferedReader(inputR);

try
{
String line = \\\\\\\"\\\\\\\";
while( (line = input.readLine()) != null)
{
StringTokenizer str = new StringTokenizer(line,\\\\\\\" \\\\\\\");
while(str.hasMoreElements())
{
String token = str.nextToken();
System.out.println(\\\\\\\"Token: \\\\\\\" + token);
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}

Venga un saludo.