WordCount与树图

时间:2014-05-14 22:51:35

标签: java regex text-files treemap

我正在编写一个程序来读取文本文件,存储在treeMap中,然后将字频率(wordcount)打印到控制台。我一直收到FileNotFoundException"我认为"我差不多完成了其余的代码。任何帮助,指示,建议和提示将不胜感激。谢谢。代码

import java.util。*;

/ **  *  * @author  *  * /

公共类WordCount {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    TextFileInput take = new TextFileInput("noteFile.txt");

    String m = take.readLine();
    String [] input = m.split("[ \n\t\r,.;:!?(){}}]");

TreeMap <String, Integer> myMap  = new TreeMap <String, Integer> ();

    /**Set set = myMap.entrySet(); 
    Iterator i = set.iterator(); 
    Map.Entry <String, Integer> me; **/

    for(int f = 0; f < input.length; f++) {         
        String key = input[f].toUpperCase();
        if(input[f].length() > 1) {
            if(myMap.get(key) == null) {
                myMap.put(key, 1);
                }   
            else {
                    int value = myMap.get(key).intValue();
                    value++;
                    myMap.put(key, value);
            }
        }       
    }       
    /**while(i.hasNext()) { 
           me = (Map.Entry)i.next(); 
           System.out.print(me.getKey() + ": "); 
           System.out.println(me.getValue()); **/


    for(Map.Entry<String, Integer> entry : myMap.entrySet()) {
        System.out.println(entry.getKey() + " : "+ entry.getValue());
    }

}
}

}

1 个答案:

答案 0 :(得分:0)

TextFileInput - 我不确定这一点。您可以使用文件和扫描程序从文件中读取。 给出文件的绝对路径。例如。 C://notepad.txt(对于Windows)

此外,您正在从文件中读取一行。您可以在while循环中添加它。要打印TreeMap,您可以执行以下操作,

 for(String entry : myMap.keySet()) {
    System.out.println(entry + " : "+ myMap.get(entry));
}

完整的代码如下,

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

public class WordCount {

public static void main(String[] args) throws FileNotFoundException {

    File file = new File("C://notepad.txt");
    Scanner scanner=new Scanner(file);

    TreeMap <String, Integer> myMap  = new TreeMap <String, Integer> ();

    while(scanner.hasNext())
    {
    String m = scanner.nextLine();
    String [] input = m.split("[ \n\t\r,.;:!?(){}}]");

    for(int f = 0; f < input.length; f++) {         
        String key = input[f].toUpperCase();
        if(input[f].length() > 1) {
            if(myMap.get(key) == null) {
                myMap.put(key, 1);
                }   
            else {

                    myMap.put(key, (myMap.get(key))+1);
            }
        }       
    }       
    }

    for(String entry : myMap.keySet()) {
        System.out.println(entry + " : "+ myMap.get(entry));
    }

}

}