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

コードは、ファイルの各行にスペースで区切られた 3 つの単語があることを想定しています。したがって、ファイルは次のようになります。

1 a 0
2 b 0

これArrayIndexOutOfBoundsExceptionは、スペースで区切られた 3 つの単語を含まない行がファイル内にある場合に発生します。たとえば、ファイルに空の行がある場合があります。

次のようにコードでこれを確認できます。

if ( st.length != 3) {
    System.err.println("The line \"" + s + "\" does not have three space-separated words.");
}
于 2010-10-06T09:02:06.493 に答える
0

テキストが巨大で、一度に読んで記憶に残しておきたくない場合。readLine() を使用して常に行を読み取り、各出力行でパターンを検索することができます。

于 2010-10-06T08:21:44.707 に答える
0

ここで説明されているパターン/マッチャーの組み合わせを使用するか、スキャナーを試すことができます。次のようにバッファリーダーを使用します。

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

で文字列を抽出しますin.toString()

于 2010-10-06T08:08:22.270 に答える
0

BufferedReaderリンクテキストを使用してそれを行う方法の例を次に示し ます

于 2010-10-06T08:27:02.520 に答える