0

辞書ゲームを作ろうとしていますが、それぞれの行に約100,000語のテキストファイルがあります。私はこのコードを持っています:

   words = new List<Word>();
   Console.WriteLine("Please wait, compiling words list...");
   TextReader tr = new StreamReader(DICT);
   string line = tr.ReadLine();
   while (line != "" && line != null) {
    words.Add(new Word(line));
    line = tr.ReadLine();
   }
   Console.WriteLine("List compiled with " + words.Count + " words.");

ただし、40510ワードで停止します。どうしてこれなの?そして、どうすれば問題を解決できますか?

ありがとうございました。

4

4 に答える 4

2

編集:申し訳ありません。メモ帳で空白行を確認しましたが、何も見つかりませんでした。Notepad ++で検索すると、それらが見つかりました。

悪いけど、とにかくありがとう。

于 2010-07-28T17:55:13.990 に答える
1

それは単に停止するか、例外をスローしますか? Console.WriteLine 呼び出しの前にデバッガーで変数値を確認してくださいline。おそらく空の行があります。

于 2010-07-28T17:55:09.403 に答える
0

問題はあなたのwhile{}ループのようです。

私はこのようなことをします:

words = new List<Word>(); 
Console.WriteLine("Please wait, compiling words list..."); 
TextReader tr = new StreamReader(DICT); 
string line;
while((line = tr.ReadLine()) != null)
if(!string.IsNullOrEmpty(line.Trim()))
{ 
 words.Add(new Word(line)); 
} 
Console.WriteLine("List compiled with " + words.Count + " words.");

私はそれをテストしていないので、いくつかのエラーが発生する可能性がありますが、大きな問題は、while{}ループを単に破棄するのではなく、最初の空白行で中断することです。この例では、それが修正されており、読み取る行がなくなったときにのみ壊れます。

于 2010-07-28T18:25:11.690 に答える
0

問題はあなたの行 != "" チェックです。それを削除すると、続行されます。

于 2010-07-28T17:56:02.103 に答える