2010-10-06 2 views
0

как искать определенное слово в текстовом файле в java? Использование буферизованного читателя, у меня есть этот код, но я получаюкак найти определенное слово в текстовом файле в java

java.lang.ArrayIndexOutOfBoundsException 

Пожалуйста, помогите мне определить, что случилось с моей программой.

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 выглядит следующим образом:

1 
a 
0 

2 
b 
0 
+0

Ваш отступы противный. Вы должны убедиться в том, что ваш код будет читаться для чтения, особенно при обращении за помощью. –

ответ

2

Ваш код ожидает каждая строка в файле есть три слова, разделенные пробелами. Так что ваш файл должен выглядеть следующим образом:

1 a 0 
2 b 0 

ArrayIndexOutOfBoundsException происходит, если есть строка в файле, который не имеет трех слов, разделенных пробелами. Например, в вашем файле может быть пустая строка.

Вы можете проверить это в вашем коде, как это:

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

Вы можете использовать сочетание Pattern/Сличитель описано here, или попробовать Scanner. Используйте буферизированную читателя, как это:

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

и извлечь строку с in.toString()

0

Если текст огромен, и вы не хотите, чтобы прочитать его сразу и сохранить в памяти. Вы можете постоянно читать строку с readLine() и искать каждую строку вывода для шаблона.

0

Вот пример того, как сделать это с помощью BufferedReader link text

Смежные вопросы