Gettysburgのアドレスをテキストファイルから単語の文字列を含むWordオブジェクトのリニアリンクリストに変換することで、検索エンジンを擬似的にシミュレートするJavaプロジェクトに取り組んでいます。ライン位置。これらを無視できる単語のハッシュテーブルと比較して、重複した単語が出現すると出現回数が記録されるバイナリ検索ツリーにかなりの単語を挿入します。文字列全体のテキストファイルにアクセスする
は、私は私のハッシュ関数を持っているとダウンツリーの追加部品のほとんどが、私は私の入力について把握することができないような問題が生じています:
はBufferedReader.readLineを使用してゲティスバーグの演説を読んで()、句読点の文字列をクレンジングした後、文字列全体がテキストファイルを含むように見えるが、行= br.readLine()としてインスタンス化されている。
四スコアと7年前の先祖たちはこの
自由に考え、大陸、新しい国家、そして 命題に専用の時、持って来:ここ
はgetty.txtの最初の数行ですすべての人が平等に創造されていること。今私たちは従事しています
私は文脈のために私のコードを添付しました。
private static ObjectList getWords(String fileName) throws IOException
{
BufferedReader br = new BufferedReader(new FileReader(fileName));
ObjectList wordList = new ObjectList();
int lineCNT = 1;
int positionCNT = 1;
String line = br.readLine();
System.out.println(line);
while(line != null)
{
line = line.replaceAll("\\p{Punct}", ""); // This somehow has access to the whole file String.
System.out.println(line);
String delims = "[\\W]+";
String[] tokens = line.split(delims);
for (int i = 0; i < tokens.length; i++)
{
System.out.println(tokens[i]);
}
while(positionCNT-1 < tokens.length)
{
LinePosition linePosition = new LinePosition(lineCNT, positionCNT);
Word word = new Word(tokens[positionCNT-1], linePosition);
wordList.insert(word);
positionCNT++;
}
line = br.readLine();
lineCNT++;
positionCNT = 1;
}
br.close();
while (!wordList.isEmpty())
{
System.out.println(((Word)wordList.removeFirst()).getText());
}
return wordList;
}
テキストファイルに実際には1行にすべてのアドレスが含まれていないことは確かですか? 'BufferedReader.readLine()'が1行以上のテキストを読むのを見たことはありません... –
@JonSkeet私は行= br.readLine()の直後に行を印刷すると、1行だけを出力しますが、アドレス全体を表示します。 –
readline()関数によれば、改行は改行( '\ n')、改行( '\ r')、改行直後に改行が続きます。 –