Frage

, wie für ein bestimmtes Wort in einer Textdatei in Java suchen? Mit gepufferten Leser, ich habe diesen Code, aber ich erhalte eine

java.lang.ArrayIndexOutOfBoundsException

Bitte helfen Sie mir festzustellen, was mit meinem Programm falsch ist.

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);}

names.txt sieht wie folgt aus:

1
a
0

2
b
0
War es hilfreich?

Lösung

erwartet Ihr Code jede Zeile in der Datei drei durch Leerzeichen getrennte Wörter zu haben. So Ihre Datei wie folgt aussehen muss:

1 a 0
2 b 0

Die ArrayIndexOutOfBoundsException tritt auf, wenn eine Zeile in der Datei ist, die nicht drei durch Leerzeichen getrennte Wörter hat. Zum Beispiel könnte es eine leere Zeile in der Datei sein.

Sie können dies wie folgt in Ihrem Code überprüfen:

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

Andere Tipps

Sie das Muster verwenden können / Matcher Kombination beschrieben hier , oder versuchen Sie die Scanner . Verwenden Sie den Buffered Leser wie folgt aus:

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

und extrahieren Sie die Zeichenfolge mit in.toString()

Wenn der Text ist riesig und Sie wollen es nicht auf einmal zu lesen und in Erinnerung zu behalten. Sie können ständig eine Zeile mit readline () gelesen, und für ein Muster jeden der Ausgangsleitung suchen.

Hier ist ein Beispiel dafür, wie es zu tun BufferedReader verwenden Link-Text

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top