2015-10-17 50 views
-2

排序:阅读文件,我执行这部分代码的话

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); 

我只是想在文件“words.txt”字排序。 但我得到的结果是 -

{{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1} 
{{\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1} 
{{\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1} 
{{\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1} 
{\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1} 
{=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1} 
{=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, \f0\fs24 \cf0 egg\=1} 
{=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, \f0\fs24 \cf0 egg\=1} 
{=1, blue\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, \f0\fs24 \cf0 egg\=1} 
{=1, moon\=1, blue\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, \f0\fs24 \cf0 egg\=1} 
{=1, moon\=1, blue\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{=1, tooth\=1, moon\=1, blue\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{=1, love\=1, tooth\=1, moon\=1, blue\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{=1, love\=1, tooth\=1, moon\=1, blue\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{the\=1, =1, blue\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, love\=1, moon\=1, tooth\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{the\=1, =1, blue\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, love\=1, moon\=1, tooth\=1, please\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{the\=1, =1, post\=1, blue\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, love\=1, moon\=1, tooth\=1, please\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{the\=1, =1, post\=1, blue\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, love\=1, moon\=1, tooth\=1, please\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{the\=1, =1, post\=1, blue\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, love\=1, moon\=1, tooth\=1, please\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{the\=1, =1, post\=1, blue\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, love\=1, moon\=1, tooth\=1, please\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 
{the\=1, =1, post\=1, blue\=1, {\colortbl;\red255\green255\blue255;}=1, {\fonttbl\f0\fswiss\fcharset0 Helvetica;}=1, love\=1, moon\=1, tooth\=1, please\=1, \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0=1, dog\=1, }=1, {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf110=1, end\=1, \margl1440\margr1440\vieww28600\viewh15800\viewkind0=1, fish\=1, \f0\fs24 \cf0 egg\=1} 

什么是错的代码??? 感谢

+0

你能告诉你的文件是怎么样的吗?通过整理单词,你的意思是什么?你只是想计算所有单词的频率? – pgiitu

回答

1
  1. 你说你想要的话,但你不读的话:你读线:

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

  3. 您从不存储除1之外的任何值作为地图中的值:如果“地图”中已包含“单词” 1到2,并且对数不做任何事情。您需要从地图上获取该单词的计数,然后将其增加,然后放回地图中。

1
  1. 为了按字母顺序排序的话,这将是更好地使用TreeMap而不是HashMap。 TreeMaps按顺序对它们的键进行排序 - 自动。
  2. 您看到的输出等同于拨打HashMap.toString()。相反,试试这个:

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

谢谢德米特里,我现在正在使用TreeMap。它很简单。 – GeekMaster

0

的问题是,我使用文本编辑,创建文档的.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();