2015-10-17 5 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

Проблема была, я создал документ с помощью 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(); 
Смежные вопросы