Java 读一个文件并对单词进行排序

Java 读一个文件并对单词进行排序,java,file,sorting,Java,File,Sorting,我正在执行这部分代码: Map<String, Integer> wordMap = new HashMap<>(); File file = new File("words.txt"); Scanner scanner = new Scanner(file); while (scanner.hasNextLine()) { String word = scanner.nextLine();

我正在执行这部分代码:

 Map<String, Integer> wordMap = new HashMap<>();
        File file = new File("words.txt");
         Scanner scanner = new Scanner(file);
         while (scanner.hasNextLine()) {
             String word = scanner.nextLine();
             int count = 1;
             if (wordMap.containsKey(word)) {                    
                 count = wordMap.get(word).intValue();
                 count++;
                 wordMap.remove(word);
                 wordMap.put(word, count);
             } else {
                 wordMap.put(word, count);
             }
           System.out.println(wordMap);
代码中有什么错误??? 谢谢

  • 你说你想要文字,但你不是在读文字:你在读台词:

     while (scanner.hasNextLine()) {
         String word = scanner.nextLine();
    
  • 您的文件不是简单的文本文件,而是RTF文件。因此,它包含RTF格式标记(字体、粗体、斜体等)

  • 在映射中,除了1之外,您永远不会将任何内容存储为值:如果“单词”已经在映射中,您只需将计数从1增加到2,并且对计数不做任何处理。您需要从映射中获取该单词的计数,将其递增,然后将其放回映射中

  • 为了按字母顺序对单词进行排序,最好使用
    TreeMap
    而不是
    HashMap
    。树形图按顺序自动排序键
  • 您看到的输出相当于调用
    HashMap.toString()
    。相反,请尝试以下方法:

    for (String key : wordMap.keys()) {
        System.out.println(key + ": " + wordMap.get(key));
    }
    

  • 问题是,我使用TextEditor创建文档,它创建.rtf文档。 我将其转换为.txt,但它可能已损坏它

    我创建了不同的.txt文件,它成功了

     Map<String, Integer> wordMap = new TreeMap<>();
                File file = new File("wordCount.txt");
                 Scanner scanner = new Scanner(file);
                 while (scanner.hasNextLine()) {
                     String word = scanner.nextLine();
                     int count = 1;
                     if (wordMap.containsKey(word)) {                    
                        count = wordMap.get(word).intValue();
                         count++;
                         wordMap.remove(word);
                         wordMap.put(word, count);
                     } else {
                         wordMap.put(word, count);
                     }
                 }
                   System.out.println(wordMap);
                 scanner.close();
    
    Map wordMap=newtreemap();
    File File=新文件(“wordCount.txt”);
    扫描仪=新扫描仪(文件);
    while(scanner.hasNextLine()){
    字符串字=scanner.nextLine();
    整数计数=1;
    if(wordMap.containsKey(word)){
    count=wordMap.get(word.intValue();
    计数++;
    删除(word);
    放置(单词,计数);
    }否则{
    放置(单词,计数);
    }
    }
    System.out.println(wordMap);
    scanner.close();
    
    您能告诉我您的文件是什么样子的吗?你把这些词分类是什么意思?你只是想计算所有单词的频率吗?谢谢Dmitry,我现在正在使用TreeMap。这很简单。
     Map<String, Integer> wordMap = new TreeMap<>();
                File file = new File("wordCount.txt");
                 Scanner scanner = new Scanner(file);
                 while (scanner.hasNextLine()) {
                     String word = scanner.nextLine();
                     int count = 1;
                     if (wordMap.containsKey(word)) {                    
                        count = wordMap.get(word).intValue();
                         count++;
                         wordMap.remove(word);
                         wordMap.put(word, count);
                     } else {
                         wordMap.put(word, count);
                     }
                 }
                   System.out.println(wordMap);
                 scanner.close();