【发布时间】:2019-03-10 10:44:08
【问题描述】:
import java.io.*;
import java.util.*;
class A {
public static void main(String args[]) throws Exception {
Console con = System.console();
String str;
int i=0;
HashMap map = new HashMap();
HashSet set = new HashSet();
System.out.println("Enter File Name : ");
str = con.readLine();
File f = new File(str);
f.createNewFile();
FileInputStream fis = new FileInputStream(str);
StreamTokenizer st = new StreamTokenizer(fis);
while(st.nextToken()!=StreamTokenizer.TT_EOF) {
String s;
switch(st.ttype) {
case StreamTokenizer.TT_NUMBER: s = st.nval+"";
break;
case StreamTokenizer.TT_WORD: s = st.sval;
break;
default: s = ""+((char)st.ttype);
}
map.put(i+"",s);
set.add(s);
i++;
}
Iterator iter = set.iterator();
System.out.println("Frequency Of Words :");
while(iter.hasNext()) {
String word;
int count=0;
word=(String)iter.next();
for(int j=0; j<i ; j++) {
String word2;
word2=(String)map.get(j+"");
if(word.equals(word2))
count++;
}
System.out.println(" WORD : "+ word+" = "+count);
}
System.out.println("Total Words In Files: "+i);
}
}
在这段代码中,首先我已经创建了一个包含以下数据的文本文件:
@Hello Hii World # * c++ java salesforce
这段代码的输出是:
**词频:
字:# = 1
字:@ = 1
字:c = 1
单词:salesforce = 1
字:* = 1
字 : Hii = 1
字:+ = 2
字:java = 1
字:世界 = 1
单词:你好 = 1
文件总字数:11**
我无法找到为什么这会将 c++ 显示为单独的单词。我 想在输出中将 c++ 组合为一个单词
【问题讨论】:
-
你对“词”的定义是什么?
-
@sweeper words表示txt文件中存在的字符串
-
是的,但是什么构成一个字?为什么
c++是一个词?word$$$$应该是一个字还是两个字还是五个字?我怎么知道什么是“词”? -
@sweeper word$$$$ 构成单字
-
@sweeper 帮帮我先生
标签: java hashmap tokenize hashset