Pregunta

cómo buscar una determinada palabra en un archivo de texto en Java? El uso de lector de buffer, tengo este código, pero me da un

java.lang.ArrayIndexOutOfBoundsException

Por favor, ayuda a determinar lo que está mal con mi programa.

System.out.println("Input name: ");
      String tmp_name=input.nextLine();


        try{

             FileReader fr;
      fr = new FileReader (new File("F:\\names.txt"));
      BufferedReader br = new BufferedReader (fr);
String s;
while ((s = br.readLine()) != null) {

String[] st = s.split(" ");
String idfromtextfile=st[0];
String nemfromtextfile = st[1];
String scorefromtextfile=st[2];


if(nemfromtextfile.equals(tmp_name)){
    System.out.println("found");      
}else{
    System.out.println("not found");
}



      }

  }catch(Exception e){ System.out.println(e);}

miradas nombres.txt como esta:

1
a
0

2
b
0
¿Fue útil?

Solución

Su código de espera de cada línea en el archivo para tener tres palabras separadas por espacios. Por lo que su archivo debe tener este aspecto:

1 a 0
2 b 0

El ArrayIndexOutOfBoundsException se produce si hay una línea en el archivo que no tiene tres palabras separadas por espacios. Por ejemplo, puede haber una línea en blanco en su archivo.

Usted puede comprobar esto en su código como el siguiente:

if ( st.length != 3) {
    System.err.println("The line \"" + s + "\" does not have three space-separated words.");
}

Otros consejos

Puede utilizar el Patrón / combinación Matcher describe aquí , o intente la escáner . Utilizar el lector de tamponado de esta manera:

BufferedReader in
   = new BufferedReader(new FileReader("foo.in"));

y extraer la cadena con in.toString()

Si el texto es enorme y no quiero leerlo a la vez y mantener en la memoria. Usted puede leer constantemente una línea con readLine (), y buscar cada uno de la línea de salida para un patrón.

Este es un ejemplo de cómo hacerlo usando BufferedReader texto del enlace

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top