Java 带树映射的字计数
我正在编写一个程序来读取一个文本文件,存储在一个树形图中,然后将词频(wordcount)打印到控制台。我不断得到FileNotFoundException“我想”我差不多完成了,剩下的代码。任何帮助、指点、建议和提示都将不胜感激。谢谢。代码如下 导入java.util.* /** * *@作者 * */ 公共类字数{Java 带树映射的字计数,java,regex,text-files,treemap,Java,Regex,Text Files,Treemap,我正在编写一个程序来读取一个文本文件,存储在一个树形图中,然后将词频(wordcount)打印到控制台。我不断得到FileNotFoundException“我想”我差不多完成了,剩下的代码。任何帮助、指点、建议和提示都将不胜感激。谢谢。代码如下 导入java.util.* /** * *@作者 * */ 公共类字数{ public static void main(String[] args) { // TODO Auto-generated method stub Text
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());
}
}
}
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
TextFileInput take=newtextfileinput(“noteFile.txt”);
字符串m=take.readLine();
字符串[]输入=m.split(“[\n\t\r,.;:!?(){}]”;
TreeMap myMap=newtreemap();
/**Set=myMap.entrySet();
迭代器i=set.Iterator();
地图。输入我**/
对于(intf=0;f1){
if(myMap.get(key)==null){
myMap.put(键,1);
}
否则{
int value=myMap.get(key.intValue();
值++;
myMap.put(键、值);
}
}
}
/**而(i.hasNext()){
me=(Map.Entry)i.next();
System.out.print(me.getKey()+“:”);
System.out.println(me.getValue())**/
对于(Map.Entry:myMap.entrySet()){
System.out.println(entry.getKey()+“:”+entry.getValue());
}
}
}
}TextFileInput-我对此不确定。您可以使用文件和扫描仪读取文件。 给出文件的绝对路径。例如:C://notepad.txt(适用于windows) 此外,您正在从文件中读取一行。您可以将其添加到while循环中。要打印树形图,可以执行以下操作:
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));
}
}
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.*;
公共类字数{
公共静态void main(字符串[]args)引发FileNotFoundException{
File File=新文件(“C://notepad.txt”);
扫描仪=新扫描仪(文件);
TreeMap myMap=newtreemap();
while(scanner.hasNext())
{
字符串m=scanner.nextLine();
字符串[]输入=m.split(“[\n\t\r,.;:!?(){}]”;
对于(intf=0;f1){
if(myMap.get(key)==null){
myMap.put(键,1);
}
否则{
myMap.put(key,(myMap.get(key))+1);
}
}
}
}
for(字符串项:myMap.keySet()){
System.out.println(entry+“:”+myMap.get(entry));
}
}
}
我不确定这是您的问题中的错误还是您的真实代码中的错误,但您在最后还有一些额外的}
。另外,“我一直在获取FileNotFoundException
”您如何运行代码?您的控制台在哪个位置?您试图读取的文件位于何处?“…和其他一些”其他错误是什么?找到的文件位于注释文件通常所在的位置。它位于JRE系统的正下方,但不在其中。我不知道这个地方叫什么(对不起)。我将代码作为Java文件运行。我使用TextFileInput读取中的代码。