求一个JAVA小程序 要求统计输出的一段英文段落中单词出现的频率

要求是在小程序窗口里面输出 点一个统计按钮以后进行统计 然后输出结果
我可以提供一段程序 求高手改一下 运行成功就给分
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Article {

//保存文章的内容
String content;
String[] rawWords;
String[] words;
int[] wordFreqs;
public Article() {
content = " ";
}
public void splitWord(){
final char SPACE = ' ';
content = content.replace('\'', SPACE).replace(',', SPACE).replace('.', SPACE);
content = content.replace('(', SPACE).replace(')', SPACE).replace('-', SPACE);
rawWords = content.split("\\s+"); }
public void countWordFreq() {
Set<String> set = new TreeSet<String>();
for(String word: rawWords){
set.add(word);
}
Iterator ite = set.iterator();
List<String> wordsList = new ArrayList<String>();
List<Integer> freqList = new ArrayList<Integer>();
while(ite.hasNext()){
String word = (String) ite.next();
int count = 0;
for(String str: rawWords){
if(str.equals(word)){
count++;
}
}
wordsList.add(word);
freqList.add(count++);
}
words = wordsList.toArray(new String[0]);
wordFreqs = new int[freqList.size()];
for(int i = 0; i < freqList.size(); i++){
wordFreqs[i] = freqList.get(i);
}
}
public void sort() {
class Word{
private String word;
private int freq; public Word(String word, int freq){
this.word = word;
this.freq = freq;
}
}
class WordComparator implements Comparator{

public int compare(Object o1, Object o2) {
Word word1 = (Word) o1;
Word word2 = (Word) o2;
if(word1.freq < word2.freq){
return 1;
}else if(word1.freq > word2.freq){
return -1;
}else{

int len1 = word1.word.trim().length();
int len2 = word2.word.trim().length();

String min = len1 > len2? word2.word: word1.word;
String max = len1 > len2? word1.word: word2.word;

for(int i = 0; i < min.length(); i++){
if(min.charAt(i) < max.charAt(i)){
return 1;
}
}

return 1;

}
}

}

List wordList = new ArrayList<Word>();

for(int i = 0; i < words.length; i++){
wordList.add(new Word(words[i], wordFreqs[i]));
}

Collections.sort(wordList, new WordComparator());

for(int i = 0; i < wordList.size(); i++){
Word wor = (Word) wordList.get(i);

words[i] = wor.word;
wordFreqs[i] = wor.freq;
}

}

public void printResult() {
System.out.println("Total " + words.length + " different words in the content!");

for(int i = 0; i < words.length; i++){
System.out.println(wordFreqs[i] + " " + words[i]);
}
}

public static void main(String[] args) {
Article a = new Article();
a.splitWord();
a.countWordFreq();
a.sort();
a.printResult();
}
}

第1个回答  2012-05-24
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Article {

// 保存文章的内容
String content;
String[] rawWords;
String[] words;
int[] wordFreqs;

public Article() {
content = " ";
}

public void splitWord() {
final char SPACE = ' ';
content = content.replace('\'', SPACE).replace(',', SPACE)
.replace('.', SPACE);
content = content.replace('(', SPACE).replace(')', SPACE)
.replace('-', SPACE);
rawWords = content.split("\\s+");
}

public void countWordFreq() {
Set<String> set = new TreeSet<String>();
for (String word : rawWords) {
set.add(word);
}
Iterator ite = set.iterator();
List<String> wordsList = new ArrayList<String>();
List<Integer> freqList = new ArrayList<Integer>();
while (ite.hasNext()) {
String word = (String) ite.next();
int count = 0;
for (String str : rawWords) {
if (str.equals(word)) {
count++;
}
}
wordsList.add(word);
freqList.add(count++);
}
words = wordsList.toArray(new String[0]);
wordFreqs = new int[freqList.size()];
for (int i = 0; i < freqList.size(); i++) {
wordFreqs[i] = freqList.get(i);
}
}

public void sort() {
class Word {
private String word;
private int freq;

public Word(String word, int freq) {
this.word = word;
this.freq = freq;
}
}
class WordComparator implements Comparator {

public int compare(Object o1, Object o2) {
Word word1 = (Word) o1;
Word word2 = (Word) o2;
if (word1.freq < word2.freq) {
return 1;
} else if (word1.freq > word2.freq) {
return -1;
} else {

int len1 = word1.word.trim().length();
int len2 = word2.word.trim().length();

String min = len1 > len2 ? word2.word : word1.word;
String max = len1 > len2 ? word1.word : word2.word;

for (int i = 0; i < min.length(); i++) {
if (min.charAt(i) < max.charAt(i)) {
return 1;
}
}

return 1;

}
}

}

List wordList = new ArrayList<Word>();

for (int i = 0; i < words.length; i++) {
wordList.add(new Word(words[i], wordFreqs[i]));
}

Collections.sort(wordList, new WordComparator());

for (int i = 0; i < wordList.size(); i++) {
Word wor = (Word) wordList.get(i);

words[i] = wor.word;
wordFreqs[i] = wor.freq;
}

}

public void printResult() {
System.out.println("Total " + words.length
+ " different words in the content!");

for (int i = 0; i < words.length; i++) {
System.out.println(wordFreqs[i] + " " + words[i]);
}
}

public static void main(String[] args) {
Article a = new Article();
a.content = "sssssssssssaadwerqwersssdfsdftrytyum1242357689235cvbbnm,masdfasdfasdfasdf,fasdf.asdfasdfasdfasdfaasdfasdf";
a.splitWord();
a.countWordFreq();
a.sort();
a.printResult();
}
}
运行一下,看是否成功,的确是一个分号出错了!现在已经改好了!追问

这个不是窗口程序类型原代码啊。。。我要能用小型窗口程序运行的

第2个回答  2012-05-24
import java.util.*;

public class List {
public int[] letterList(String bb){
String b = bb.toLowerCase();
int[] test = new int[26];
for(int n=0;n<b.length();n++)
{
char a=b.charAt(n);
int index=a-'a';
if(index<test.length && index>=0){
test[index]++;
}
}
return test;
}

public void printlist(int test[]){
for(int i=0;i<test.length;i++){
System.out.print(test[i]);
}
}
public static void main(String[] args) {
int []chars=new int[100];
String str = args[0].trim();
List list=new List();
chars=list.letterList(str);
int[] flag = list.letterList(str);
System.out.println("String is:" );
list.printlist(flag);

}
}--------------------------------------------------------
上面的代码能实现统计,在命令行,先编译, 再输入 java List ababcdasgf 既可.面板什么的自己加吧。全让别人帮你做了,你很难学会java的。追问

在创建面板里面输入面板input 属性是txetfield 但是统计量content是string
input中的值怎么给content呢

追答

输入面板不需要做。
String words=JOptionPane.showInputDialog("input words:");
这样是弹出一个对话框,提示输入字母,不限字数。
你只需要再做一个面板,显示结果就行。
=========================代码如下==============================
=====================================================
import java.util.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.GridLayout;

public class List extends JFrame{

public int[] letterList(String bb){
String b = bb.toLowerCase();
int[] test = new int[26];
for(int n=0;n=0){
test[index]++;
}
}
return test;
}

public JLabel printlist(int text[]){
JLabel label =new JLabel();
String strs="各字母出现的次数:\n\n";

for(int i=0;i<text.length;i++){
strs += (" "+text[i]);
}
label.setText(""+strs);
return label;
}
public static void main(String[] args) {
int []chars=new int[100];
String str=JOptionPane.showInputDialog("input words:");
List list=new List();
chars=list.letterList(str);
int[] flag = list.letterList(str);

JFrame frame=new JFrame();
frame.add(list.printlist(flag));
frame.setTitle("字母统计");
frame.setSize(420,150);
frame.setLocation(220,320);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
}
还有什么,继续追问。

追问

最好能做成小程序查看器模式
一个输入框 输入 然后点统计 输出框那边输出结果
因为这个程序最后要展示的 总不可能在cmd里演示吧。。。
真心乐意教我请加qq546462085

追答

你运行了没啊。现在已经不用在cmd里面输入了。你要的已经全部实现,自己做一下修饰就好了。
我很少登qq。

第3个回答  2012-05-24
while(ite.hasNext()){
String word = (String) ite.next();
int count = 0;
for(String str: rawWords){
if(str.equals(word)){
count++;
}
}
wordsList.add(word);
freqList.add(count++);
}
这段代码中的int count = 0;的分号是中文格式的,改成英文格式的就OK
第4个回答  2012-05-23
已经改了,小问题,一个分号出错;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Article {

//保存文章的内容
String content;
String[] rawWords;
String[] words;
int[] wordFreqs;
public Article() {
content = " ";
}
public void splitWord(){
final char SPACE = ' ';
content = content.replace('\'', SPACE).replace(',', SPACE).replace('.', SPACE);
content = content.replace('(', SPACE).replace(')', SPACE).replace('-', SPACE);
rawWords = content.split("\\s+"); }
public void countWordFreq() {
Set<String> set = new TreeSet<String>();
for(String word: rawWords){
set.add(word);
}
Iterator ite = set.iterator();
List<String> wordsList = new ArrayList<String>();
List<Integer> freqList = new ArrayList<Integer>();
while(ite.hasNext()){
String word = (String) ite.next();
int count = 0;
for(String str: rawWords){
if(str.equals(word)){
count++;
}
}
wordsList.add(word);
freqList.add(count++);
}
words = wordsList.toArray(new String[0]);
wordFreqs = new int[freqList.size()];
for(int i = 0; i < freqList.size(); i++){
wordFreqs[i] = freqList.get(i);
}
}
public void sort() {
class Word{
private String word;
private int freq; public Word(String word, int freq){
this.word = word;
this.freq = freq;
}
}
class WordComparator implements Comparator{

public int compare(Object o1, Object o2) {
Word word1 = (Word) o1;
Word word2 = (Word) o2;
if(word1.freq < word2.freq){
return 1;
}else if(word1.freq > word2.freq){
return -1;
}else{

int len1 = word1.word.trim().length();
int len2 = word2.word.trim().length();

String min = len1 > len2? word2.word: word1.word;
String max = len1 > len2? word1.word: word2.word;

for(int i = 0; i < min.length(); i++){
if(min.charAt(i) < max.charAt(i)){
return 1;
}
}

return 1;

}
}

}

List wordList = new ArrayList<Word>();

for(int i = 0; i < words.length; i++){
wordList.add(new Word(words[i], wordFreqs[i]));
}

Collections.sort(wordList, new WordComparator());

for(int i = 0; i < wordList.size(); i++){
Word wor = (Word) wordList.get(i);

words[i] = wor.word;
wordFreqs[i] = wor.freq;
}

}

public void printResult() {
System.out.println("Total " + words.length + " different words in the content!");

for(int i = 0; i < words.length; i++){
System.out.println(wordFreqs[i] + " " + words[i]);
}
}

public static void main(String[] args) {
Article a = new Article();
a.splitWord();
a.countWordFreq();
a.sort();
a.printResult();
}
}
只要在当前文件下创建一个文本文件,里面可以写一些单词,就可以了追问

骗分的一边去吧。。。

追答

放屁

第5个回答  2012-05-24
一个分号出错

java程序:统计一段英文段落中每个单词出现的次数,这个段落存储在一个...
import java.util.HashMap;import java.util.Iterator;import java.util.Scanner;\/ 字典类,记录文章中出现过的所有单词及其次数 author Administrator \/ public class Dictionary { private HashMap< String, Integer > dictionary;private int wordsCount;\/ 字典这个类的构造函数 \/ public Dictionary() {...

Java问题 怎么将将一个英文句子中的每一个单词的首字母转化为大写字母...
public Capitalized() { } public void printCapitalized() { int i;for (i = 0; i <cs.length; i++) { if (Character.isSpaceChar(cs[i])){ i = i + 1;cs[i]=Character.toUpperCase(cs[i]);} } for (i = 0; i< cs.length; i++) { System.out.print(cs[i]);} } pub...

学java最重要的是学java的什么内容
学java最重要的是下面四个内容:1、掌握Java语言的使用:语言语法、程序逻辑,OOP(面向对象)思想,封装、继承、多态,集合框架、泛型、File I\\O技术,多线程技术、socket网络编程,XML技术。编程有关的操作系统基本使用,HTML5规范、HTML5文档结构、HTML5元素、Web语义化;CSS3规范、CSS3选择器、层叠与...

做一个微信小程序需要多少钱?
1、自己组技术团队自己开发,需要的人员有产品经理、框架工程师、JAVA、PHP、前端、后端、测试工程师,开发周期在1-2个月。人员成本5-8万,后期维护成本没算。(不推荐)2、购买别人的小程序源码,用自己的服务器,找个技术人员专职维护。源码费用一般8000-10000,服务器一年3000,维护成本每月6000。(...

一个几乎零基础的小白,怎么学java
完成项目部署;第四阶段掌握JUC、Zookeeper、Dubbo、MySQL 高级、MyCat和微信小程序以及微信支付的开发等内容。如果想了解Java更多相关知识,建议到千锋教育了解一下。千锋教育目前在18个城市拥有22个校区,年培养优质人才20000余人,与国内20000余家企业建立人才输送合作关系,院校合作超600所。

电脑基础知识问答卷
而电脑(微机)的出现是 20 世纪 70 年代。 1,Q:快速改变 Windows 窗口状态:A:双击窗口上方的标题栏(通常为蓝色),可以使窗口在最大化和常规大小间切换。 2,Q:一次打开编辑众多 Windows 系统文件:A:在“开始\/运行”中输入“sysedit”,确定,可以一次打开五个系统文件进行编辑:autoexec.bat,config.sys,win.ini,...

制作一个店铺的微信小程序需要多少钱?
制作一个微信小程序需要花费多少钱,主要还是看你的需求,一般会涉及到以下费用:1、固定费用①认证费用:300元\/年②服务器费用:云开发(小程序自带云开发功能)、云主机(根据自己实际情况选择配置,最低配置参考价格大概在500元\/年)、域名、https证书(小程序必须要安装https证书,https证书有免费又有...

请人做一个微信小程序需要多少钱?
4、激活公众号粉丝小程序可以与公众号进行结合,在拥有小程序之后,企业就可以将其与公众号进行结合,然后在公众号底部菜单栏、公众号推文中加入小程序链接,这样一来就可以让公众号的粉丝有效引流到小程序中,然后再通过各种各样的营销手段,引导公众号的粉丝在小程序中下单购买。凡科小程序商城平台,...

83. EXCEL数据处理:在如图所示的Excel表格的数据清单中有50个同学的成 ...
A.Adobe Acrobat B.BIOS C.Java编译器 D.ORACLE 14.I\/O语句“printf(“hello!”);”属于高级语言中的___成分。 A.传输B.数据C.运算D.控制 15.程序与算法相比,可以不满足下列___特性。 A.每一步操作都是可执行的(能行性) B.至少产出一个输出量(包括参量状态的改变) C.在执行了有穷步的操作后终止...

求一个ASP课程设计 网上购物系统 做过的朋友们拜托给发下 791419843@qq...
经过这个阶段的设计工作,应该得出对目标系统的描述,从而在编码阶段可以把这个描述直接翻译成用JSP网页设计语言书写的程序。5.1 程序设计本系统设计的网站在设计过程中包含页面(HTML)的设计以及客户端验证机制(JavaScript)的设计。JavaScript也叫小脚本语言,他是一种非常流行的动态网页技术。他不仅能够实现网页的动态效果,...

相似回答