2010-10-06 25 views
0

comment rechercher un certain mot dans un fichier texte en java? En utilisant BufferedReader, j'ai ce code, mais je reçois uncomment rechercher un certain mot dans un fichier texte en java

java.lang.ArrayIndexOutOfBoundsException 

S'il vous plaît me aider à déterminer ce qui ne va pas avec mon programme.

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 ressemble à ceci:

1 
a 
0 

2 
b 
0 
+0

Votre empreinte est horrible. Vous devez vous assurer de mettre votre code en retrait pour plus de lisibilité, en particulier lorsque vous demandez de l'aide. –

Répondre

2

Votre code attend chaque ligne dans le fichier d'avoir trois mots séparés par un espace. Donc, votre dossier doit ressembler à ceci:

1 a 0 
2 b 0 

Le ArrayIndexOutOfBoundsException se produit s'il y a une ligne dans le fichier qui n'a pas trois mots séparés par un espace. Par exemple, il se peut qu'il y ait une ligne vide dans votre fichier.

Vous pouvez vérifier dans votre code comme ceci:

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

Vous pouvez utiliser la combinaison modèle/Matcher décrit here, ou essayez le Scanner. Utilisez le BufferedReader comme ceci:

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

et extraire la chaîne avec in.toString()

0

Si le texte est énorme et vous ne voulez pas le lire à la fois et garder en mémoire. Vous pouvez constamment lire une ligne avec readLine(), et rechercher un motif dans chaque ligne de sortie.

0

Voici un exemple de la façon de le faire en utilisant BufferedReader link text