Подсчет вхождений слова с использованием программы ввода / вывода в Java

1

Как вы находите наиболее встречающиеся слова в файле с пятью или более буквами, используя программу ввода/вывода? Это код стартера, который у меня есть.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;


public class FileIOtest {

/**
 * @param args
 * @throws FileNotFoundException 
 */
public static void main(String[] args) throws FileNotFoundException {
    // TODO Auto-generated method stub
    File file = new File ("myfile.txt");
    Scanner inputFile = new Scanner(file);

    while(inputFile.hasNext())
    {
        String str =inputFile.nextLine();
        System.out.println(str);
    }
    inputFile.close();

}

}
Теги:
io
file-io
input
find-occurrences

1 ответ

0
Лучший ответ

Я бы сделал hashmap который содержит пару ключ-значение между словом и счетчиком для количества вхождений.

Map<String, Integer> myMap = new HashMap<String, Integer>();

Вы должны разделить каждую строку на пробел, а затем перебирать массив разделенной строки. Затем вы можете проверить, имеет ли слово 5 или более символов и увеличивает счетчик в вашем hashmap

    String str = inputFile.nextLine();
    String[] parts = str.split(" ");
    for(int x  = 0; x < parts.length; x++)
    {
        String word = parts[x];
       if(word.length() >= 5)
       {
           if(myMap.containsKey(word))
           {
              myMap.put(word, myMap.get(word) + 1);
           }
           else
           {
              myMap.put(word, new Integer(1));
           }
       }
    }

Затем в самом конце вы можете получить внутренний набор HashMap с помощью myMap.entrySet(). Затем перейдите через этот набор, чтобы найти первый, второй, третий, ect наиболее распространенные или наименее распространенные слова.

  • 1
    Вам также необходимо удалить символы «грамматики», такие как точки с запятой и запятые, которые увеличивают размер слов, а также создают две версии на карте. Это предполагает, что ваш файл содержит текст, а не просто список слов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню