//输入一个英语句子,把里面每个单词出现的次数统计出来
package ch22;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.StringTokenizer;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Exec22_10 extends JFrame ...{
public Exec22_10() ...{
String out = "", output = "";
Hashtable ht = new Hashtable();
String str = JOptionPane.showInputDialog("输入一个英语句子");
StringTokenizer st = new StringTokenizer(str, " ,.?!");
ht.clear();
// 存在hash表里的数据,一定要Enumeration才可以掉出来的
while (st.hasMoreTokens()) ...{
out = st.nextToken();// 无符号单词
for (int i = 0; i < out.length(); i++) ...{
output = String.valueOf(out.charAt(i));
Object count = ht.get(output);
if (count == null) ...{
count = (Integer) 1;
ht.put(output, count);
} else ...{
int temp = ((Integer) count).intValue();
ht.put(output, new Integer(temp + 1));
}
}
System.out.println("单词 出现次数 ");
// 这个是把村在hash表里的东西取出来
Enumeration items = ht.keys();// 返回此哈希表中的键的枚举,就是把所有的额键给列举出来
while (items.hasMoreElements()) ...{
String key = (String) (items.nextElement());
Object val = ht.get(key);
System.out.println(key + " " + val + " ");
}
}
}

public static void main(String[] args) ...{
Exec22_10 fegor = new Exec22_10();
fegor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fegor.setVisible(true);
fegor.setSize(600, 460);
}
}
/**//*
Object count;
ht.put(Object,Object)
可以这样放
ht.put(Object,count)
加入我想把count+1后再放进去,不能直接加
定义个第三者
int temp;
先把count强制转换成Integer,然后再取出Integer里面的值
((Integer)count).intValue();
把取出来的值赋给temp
temp = ((Integer)count).intValue();
新建一个Integer对象,
Integer fegor = new Integer(temp+1);
然后放到里面去。
ht.put(Object,fegor);
Object对象要想得到int值,就必须强制抓换取值。
也就是说,int数要想坐到Object的位置上,必须是Integer对象。
只要是这样的就是强制转换
(Integer)obj;
这样说明是一个Integer对象,new的一个
Integer(temp)*/
统计英文句子中单词频率
1342

被折叠的 条评论
为什么被折叠?



