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