0

私は、永遠のforループでテキストを1行ずつ解析するJavaメソッドに取り組んでいます。

bufferReaderご覧のとおり、 a の内容をリストに割り当てています

BufferedReader br = new BufferedReader(new FileReader("C:/feed.txt"));
            String strLine;
            ArrayList list = new ArrayList();    
while ((strLine = br.readLine()) != null) {
                list.add(strLine);

これは完全に機能し、feed.txtコンテンツはarrayList18238 行に完全に割り当てられます。

しかし、for ループ (次のコード) で反復子を使用してリストの内容を使用および処理しようとすると、問題が発生します。

Iterator itr;  
for (itr = list.iterator(); itr.hasNext();) { 
    String str = itr.next().toString();
}

ループ内の命令 (ビジネス プロセス) は、プログラムが反復を停止する行番号 5175 まで完全に機能しています。イテレータに関連する問題です。

この行を削除しても特別なことは何もないので、イテレータについてだと思います。問題は解決しません。

イテレータに制限はありますか? どうすれば上げられるでしょうか?

私はこの行数を持つファイルを解析しようとしていますが、私のプロジェクトでは永遠に終わることのないループが発生し、常に行を受信することになっています。

私を助けてくれませんか?

4

2 に答える 2

0

「どのように組み合わせるのですか」と尋ねましたか?簡単な例を次に示します。イテレータを使用しないことに注意してください。そのため、入力ファイルのすべての行で何かを実行できることがわかります。あなたの質問に実際に答えているわけではありませんが、問題がどこにあるのかを絞り込むのに役立つはずです.

BufferedReader br = new BufferedReader(new FileReader("C:/feed.txt"));
String strLine, str;
int numLines;
ArrayList list = new ArrayList();    
numLines = 0;
while ((strLine = br.readLine()) != null) {
    list.add(strLine);
    System.out.println(list.get(numLines));
    numLines++;
    // do whatever you were going to do with the iterator here
    str = strLine.toString();
}

System.out.printf("Read in %d lines; the last line read is \n%s\n", numLines, list.get(numLines-1));

これはまさにあなたが求めていたものではありませんが、このコードを実行してどのように失敗するかを確認すると、指定された問題の解決に一歩近づくことができます。

于 2013-03-05T13:16:44.423 に答える
0

ここでいくつかのこと:

まず、使用する

List<String> list = new ArrayList<String>();

次に、使用して繰り返すことができます

for (String str : list) {
  // do something
}

それで問題は解決しますか?

于 2013-03-05T10:59:27.707 に答える