Word索引图非法转义字符

时间:2016-12-22 17:55:25

标签: java arrays file structure words

我不明白我在这里做错了什么。

说明如下:

在此项目中,您将阅读文本文件。对于每个新认识的单词,它都是 输入索引及其发生的行。对于之前的任何单词 被识别,它发生的行将进入索引。

因为这些词很常见,所以包含三(3)个或更少字符的任何单词都是 被忽略。同样,标点符号和大写也应该被忽略。 连字符被视为单个单词而不连字符。例如,'偷听' 和'偷听'是一样的。

单词可能有意或无意地有多个标点符号。从而, '相等。','相等......','相等。,。,。'和'。,。;相等'都是同一个词 - '相等'。 输入用尽后,单词索引及其行位置应为 按字母顺序打印。

import java.util.*;
import java.io.*;

public class Proj5 {

public static void main(String[] args) throws FileNotFoundException {
    Map<String, ArrayList<Integer>> occurrence = new HashMap<>();
    Scanner scan = new Scanner(new FileReader("words.txt"));

    for (int lineNum = 1; scan.hasNextLine(); lineNum++) {
        String line = scan.nextLine();
        String[] words = line.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s+");

        for (String word : words) {
            if (word.length() >= 4) {
                word = word.toLowerCase();
                ArrayList<Integer> list = occurrence.get(word);

                if (list == null) {
                    list = new ArrayList<>();
                    occurrence.put(word, list);
                }
                if (!list.contains(lineNum)) {
                    list.add(lineNum);
                }
            }
        }
    }
    List<String> words = new ArrayList<>();
    words.addAll(occurrence.keySet());
    Collections.sort(words);

    words.stream().forEach((word) -> {
        System.out.println(word + " - " + occurrence.remove(word));
    });
  }
}

是的,我的目录中有一个words.txt。

0 个答案:

没有答案