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

作者&投稿:查枯 (若有异议请与网页底部的电邮联系)
求java程序,要求对文本语句中的单词计数。~

你是要统计一个文本文件的单词个数还是一个字符串的单词个数?

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*
* 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
*
* 分析:
* A:定义一个字符串(可以改进为键盘录入)
* B:定义一个TreeMap集合
* 键:Character
* 值:Integer
* C:把字符串转换为字符数组
* D:遍历字符数组,得到每一个字符
* E:拿刚才得到的字符作为键到集合中去找值,看返回值
* 是null:说明该键不存在,就把该字符作为键,1作为值存储
* 不是null:说明该键存在,就把值加1,然后重写存储该键和值
* F:定义字符串缓冲区变量
* G:遍历集合,得到键和值,进行按照要求拼接
* H:把字符串缓冲区转换为字符串输出
*
* 录入:linqingxia
* 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)
*/
public class TreeMapDemo {
public static void main(String[] args) {
// 定义一个字符串(可以改进为键盘录入)
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
// 定义一个TreeMap集合
TreeMap tm = new TreeMap();
//把字符串转换为字符数组
char[] chs = line.toCharArray();
//遍历字符数组,得到每一个字符
for(char ch : chs){
//拿刚才得到的字符作为键到集合中去找值,看返回值
Integer i = tm.get(ch);
//是null:说明该键不存在,就把该字符作为键,1作为值存储
if(i == null){
tm.put(ch, 1);
}else {
//不是null:说明该键存在,就把值加1,然后重写存储该键和值
i++;
tm.put(ch,i);
}
}
//定义字符串缓冲区变量
StringBuilder sb= new StringBuilder();
//遍历集合,得到键和值,进行按照要求拼接
Set set = tm.keySet();
for(Character key : set){
Integer value = tm.get(key);
sb.append(key).append("(").append(value).append(")");
}
//把字符串缓冲区转换为字符串输出
String result = sb.toString();
System.out.println("result:"+result);
}
}
/***不懂里面的的一些方法的可以找本书看看Map集合方面的,还有学会查API,否则你一辈子都读不懂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.content = "sssssssssssaadwerqwersssdfsdftrytyum1242357689235cvbbnm,masdfasdfasdfasdf,fasdf.asdfasdfasdfasdfaasdfasdf";
a.splitWord();
a.countWordFreq();
a.sort();
a.printResult();
}
}
运行一下,看是否成功,的确是一个分号出错了!现在已经改好了!

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的。

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

已经改了,小问题,一个分号出错;
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();
}
}
只要在当前文件下创建一个文本文件,里面可以写一些单词,就可以了

一个分号出错


求写一个java小程序
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.swing.JOptionPane;\/** * 复制文件或文件夹 * * zww *\/public class ...

用java编写一个小程序
import java.util.*;public class TestComparable { public static void main(String[] args) { List s = new ArrayList();s.add(new Name("wang","fei"));s.add(new Name("wang","hong"));s.add(new Name("yang","lin"));s.add(new Name("li","ju"));s.add(new Name("liu...

帮忙写一个简单的java小程序
import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;public class Test { \/ param args \/ public static void main(String[] args) { \/\/ TODO Auto-generated method stub boolean flag = true;\/\/ 是否还输入 Student stu = null;ArrayList al = new ArrayList();...

一个JAVA小程序的问题
2.public String breed() { System.out.println(name+"随便给口吃的");} 实现接口的子类中重写出错了。你的方法要返回String类型的值而不是输出。将接口和子类中的方法的返回值String改为void。代码贴上:———test.java———interface withpet { public void breed();public void play();} ...

一个java小程序
java 目前很难做到 监听控制台输入。必须要使用全局系统钩子。(Java基本办不到)因为控制台不属于你java 程序的一部分。但是 java 可以 全局监听 AWT (窗口);

谁能帮我做一个java的小程序 不是很复杂的那种 类似调色板那种_百度知 ...
我这里有一个程序,是读文件和用调色板设置背景色的程序,你看看如何。import java.awt.*;import javax.swing.*;import javax.swing.colorchooser.ColorSelectionModel;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import java.io.*;import java.awt.event.*;public ...

求JAVA制作小程序方法
C:\\ghq\\>Java AppletviewerJavaWorld.html<ENTER> 可以看出,该命令启动了Java Appletviewer并指明了HTML文件,该HTML文件中包含对应于HelloWorld的<Java Applet>语句。如果用浏览器运行HelloWorldJava Applet,需在浏览器的地址栏中输入HTML文件URL地址。至此,一个Java Applet程序的开发运行整个过程结束了(...

求大大用java编写一个小程序
nextInt();}catch(InputMismatchException exp){ System.out.println("Error!Invalid value, program ends!");\/\/类型出错,程序出错,停止哦 break;} if(inputValue >= 20 ){ System.out.println("Error! Invalid value, program ends!");\/\/数字大于20,出错,程序停止额 break;} } } } ...

一个JAVA小程序
一个JAVA小程序  我来答 首页 在问 全部问题 娱乐休闲 游戏 旅游 教育培训 金融财经 医疗健康 科技 家电数码 政策法规 文化历史 时尚美容 情感心理 汽车 生活 职业 母婴 三农 互联网 生产制造 其他 日报 日报精选 日报广场 用户 认证用户 视频作者 日报作者 知道...

用JAVA编写一个小应用程序
单人版五子棋,自己写的。--- import java.awt.*;import java.awt.event.*;import javax.swing.*;class mypanel extends Panel implements MouseListener { int chess[][] = new int[11][11];boolean Is_Black_True;mypanel(){ Is_Black_True = true;for(int i = 0;i < 11;i++){ f...

渭源县15821132614: 求一个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[] ...

渭源县15821132614: 用Java编写一个小程序,要求对任意10个整数【不重复】,求出里面的最大数和最小数并输出 -
巴邱熊胆: int min=Integer.MAX_VALUE;// int max=0; int[] num={1,2,5,6,22,12,88,65,56,38};//可以设置任意整数 for (int i = 0; i < num.length; i++) { if(min>num[i]){ min = num[i]; } if(max

渭源县15821132614: .编写一个JAVA小程序,接受用户从键盘输入的一个正整数,然后统计并输出从1到这个正整数的累加和 -
巴邱熊胆: import java.util.Scanner; public class Test {public static void main(String args[]){Scanner scan = new Scanner(System.in);int count = 0;int num = scan.nextInt();for(int i = 1;i<=num;i++){count +=i;}System.out.println(count);} }

渭源县15821132614: 编写一个Java应用程序,要求从键盘输入两个整数,计算这两个数据之和,并输出. 谢谢! -
巴邱熊胆: 利用Java应用程序编写要求输入两个整数并计算两个数据之和具体操作步骤如下: import java.util.Scanner public class Test {public static void main(String[] args) { System.out.print("请输入第一个整数:") Scanner s=new Scanner(System.in) int a=s.nextInt() System.out.print("请输入第二个整数:") int b=s.nextInt() System.out.println(a+b) } }

渭源县15821132614: 求一个java小程序,查出一个字符串中出现次数最多的,并输出此字符 -
巴邱熊胆: 建议自己写否则看代码再认真也学不到东西 做一个数组容量为26,做一个方法读入string中的某字符,根据ASCII码计算出该字符是26个字母中的第几个,然后再在数组中找到相应的位置加一 最后做一个简单查找即可

渭源县15821132614: 从键盘输入一串字符串,编写一个java程序实现统计,输出有几个大写字母,几个小写字母,和几个数字,并把大 -
巴邱熊胆: import java.io.*;import java.util.*; public class Static{private String input; private int bLetter =0;private int sLetter =0;private int numbers =0;private int others =0;private int spaces =0; public Static(){ this.getString(); char[] list = charsOfString(input);for (...

渭源县15821132614: JAVA中,统计单词的个数,并按要求输出. -
巴邱熊胆: public static void main(String[] args) {// TODO Auto-generated method stubString str = "I am a student";String[] arr = str.split(" ");System.out.println("共"+arr.length+"个单词");for(String item:arr) System.out.println(item);}

渭源县15821132614: 写一个java程序,分别统计并输出文本文件中元音字母a,e,i,o,u的个数 -
巴邱熊胆: import java.io.*; public class Input1 {public static void sumChar(byte[] b) //字母统计 {int n=0;for (int i=0;i<b.length ;i++ ){ if(b[i]=='a'||b[i]=='e'||b[i]=='i'||b[i]=='o'||b[i]=='u') n++;}System.out.println("char count="+n);}public static void main(String[] ...

渭源县15821132614: 编写一个Java应用程序,实现任意个学生成绩的相关统计与输出,具体要求包括:
巴邱熊胆: public class test {public static String printChengji(int a,int b){//加int _sum=a+b;//减int _plus=a-b;//乘int _ji=a*b;//除int _sh=a/b;//求模int _mo=a%b;System.out.println("和:"+_sum+" 减:"+_plus+" 乘:"+_ji+" 除:"+_sh+" 求模:"+_mo);}public static void main(String [] args){printChengji(10,2);} }

渭源县15821132614: 用java编写一个程序,分别统计并输出文本文件中元音字母a,e,i,o,u的个数 -
巴邱熊胆: package temp;import java.util.Scanner;public class Temp { /** * 得到输入的字符串 * * @return */ public String getString(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网