0

如何在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
4

4 回答 4

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.");
}
于 2010-10-06T09:02:06.493 回答
0

您可以使用此处描述的 Pattern/Matcher 组合,或尝试使用Scanner。像这样使用缓冲阅读器:

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

并提取字符串in.toString()

于 2010-10-06T08:08:22.270 回答
0

如果文本很大并且您不想立即阅读并保留在内存中。您可以使用 readLine() 不断地读取一行,并在每个输出行中搜索一个模式。

于 2010-10-06T08:21:44.707 回答
0

这是一个如何使用 BufferedReader 链接文本的示例

于 2010-10-06T08:27:02.520 回答