首页 文章

WordCount与树图

提问于
浏览
0

我正在编写一个程序来读取文本文件,存储在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

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

相关问题