2010-10-06 128 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

你的縮進是可怕的。您應該確保縮進代碼的可讀性,特別是在尋求幫助時。 – 2010-10-06 09:09:25

回答

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

您可以使用模式/匹配器組合描述here,或嘗試Scanner。使用緩衝的讀者是這樣的:

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

,並提取與in.toString()

0

字符串如果文字是巨大的,你不要想一次讀它,並保持在內存中。您可以不斷用readLine()讀取一行,並在每個輸出行中搜索一個模式。

0

下面是如何使用的BufferedReader link text

相關問題