      1  import java.util.Map;

      2  import java.util.Scanner;

      3  import java.util.TreeMap;

      4  import java.io.File;

      5  import java.io.FileNotFoundException;

      6

      7  /**

      8     This program prints the frequencies of all words in "Alice in Wonderland".

      9  */

     10  public class WordFrequency

     11  {

     12     public static void main(String[] args)

     13        throws FileNotFoundException

     14     {

     15        Map<String, Integer> frequencies = new TreeMap<String, Integer>();

     16        Scanner in = new Scanner(new File("alice30.txt"));

     17        while (in.hasNext())

     18        {

     19           String word = clean(in.next());

     20

     21           // Get the old frequency count

     22

     23           Integer count = frequencies.get(word);

     24

     25           // If there was none, put 1; otherwise, increment the count

     26

     27           if (count == null) { count = 1; }

     28           else { count = count + 1; }

     29

     30           frequencies.put(word, count);

     31        }

     32

     33        // Print all words and counts

     34

     35        for (String key : frequencies.keySet())

     36        {

     37           System.out.printf("%-20s%10d\n", key, frequencies.get(key));

     38        }

     39     }

     40

     41     /**

     42        Removes characters from a string that are not letters.

     43        @param s a string

     44        @return a string with all the letters from s

     45     */

     46     public static String clean(String s)

     47     {

     48        String r = "";

     49        for (int i = 0; i < s.length(); i++)

     50        {

     51           char c = s.charAt(i);

     52           if (Character.isLetter(c))

     53           {

     54              r = r + c;

     55           }

     56        }

     57        return r.toLowerCase();

     58     }

     59  }