java程序:统计一段英文段落中每个单词出现的次数,这个段落存储在一个字符串变量中
RT我只知道C是怎么做的,java数组什么的真的不知道如何下手啊!!!现在很急需这个程序,求大神帮忙,希望程序能尽量简单点,分不够的话再加哈~求助啊求助!!!!...
RT
我只知道C是怎么做的,java数组什么的真的不知道如何下手啊!!!
现在很急需这个程序,求大神帮忙,希望程序能尽量简单点,分不够的话再加哈~
求助啊求助!!!! 展开
我只知道C是怎么做的,java数组什么的真的不知道如何下手啊!!!
现在很急需这个程序,求大神帮忙,希望程序能尽量简单点,分不够的话再加哈~
求助啊求助!!!! 展开
4个回答
展开全部
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() {
dictionary = new HashMap< String, Integer >();
wordsCount = 0;
}
/**
* 向字典里插入一个单词
* @param word
*/
public void insert( String word ) {
if ( dictionary.containsKey( word ) ) {
int currentCount = dictionary.get( word );
dictionary.put( word, currentCount + 1 );
} else {
dictionary.put( word, 1 );
}
wordsCount++;
}
/**
* 取得字典里所有不同的单词
* @return
*/
public int getDifferentWordsNum() {
return dictionary.size();
}
/**
* 返回字典里的所有单词 * 其出现次数
* @return
*/
public int getAllWordsNum() {
return wordsCount;
}
/**
* 展示字典中存放的所有单词及其出现次数
*/
public void displayDictionary() {
for ( Iterator< String > it = dictionary.keySet().iterator(); it.hasNext(); ) {
String key = it.next();
System.out.print( key );
System.out.print( ": " );
System.out.println( dictionary.get( key ) );
}
}
public static void main( String[] args ) throws Exception {
//这里放置你所说的段落
String passage = "public static void main( String[] args ) {";
Scanner scanner = new Scanner( passage );
Dictionary dict = new Dictionary();
while ( scanner.hasNextLine() ) {
String line =scanner.nextLine();
boolean isBlankLine = line.matches( "\\W" ) || line.length() == 0;
if ( isBlankLine ) {
continue;
}
String[] words = line.split( "\\W" );
for ( String word : words ) {
if ( word.length() != 0 ) {
dict.insert( word );
}
}
}
dict.displayDictionary();
}
}
import java.util.Iterator;
import java.util.Scanner;
/**
* 字典类,记录文章中出现过的所有单词及其次数
* @author Administrator
*
*/
public class Dictionary {
private HashMap< String, Integer > dictionary;
private int wordsCount;
/**
* 字典这个类的构造函数
*/
public Dictionary() {
dictionary = new HashMap< String, Integer >();
wordsCount = 0;
}
/**
* 向字典里插入一个单词
* @param word
*/
public void insert( String word ) {
if ( dictionary.containsKey( word ) ) {
int currentCount = dictionary.get( word );
dictionary.put( word, currentCount + 1 );
} else {
dictionary.put( word, 1 );
}
wordsCount++;
}
/**
* 取得字典里所有不同的单词
* @return
*/
public int getDifferentWordsNum() {
return dictionary.size();
}
/**
* 返回字典里的所有单词 * 其出现次数
* @return
*/
public int getAllWordsNum() {
return wordsCount;
}
/**
* 展示字典中存放的所有单词及其出现次数
*/
public void displayDictionary() {
for ( Iterator< String > it = dictionary.keySet().iterator(); it.hasNext(); ) {
String key = it.next();
System.out.print( key );
System.out.print( ": " );
System.out.println( dictionary.get( key ) );
}
}
public static void main( String[] args ) throws Exception {
//这里放置你所说的段落
String passage = "public static void main( String[] args ) {";
Scanner scanner = new Scanner( passage );
Dictionary dict = new Dictionary();
while ( scanner.hasNextLine() ) {
String line =scanner.nextLine();
boolean isBlankLine = line.matches( "\\W" ) || line.length() == 0;
if ( isBlankLine ) {
continue;
}
String[] words = line.split( "\\W" );
for ( String word : words ) {
if ( word.length() != 0 ) {
dict.insert( word );
}
}
}
dict.displayDictionary();
}
}
更多追问追答
追问
十分感谢啊,泪流满面!代码都运行出来了!!但是我还是初学,有很多都不太懂……
private HashMap dictionary; 这个格式的从来没见过,百度也搜不到,请问一下这是什么意思?
还有,能不能请你在主要的方法里适当加一下注释啊,万分感谢啊!
追答
HashMap是Java集合中的一种,是使用哈希表实现的Map,HahsMap中的是使用了Java5.0新增的泛型功能,你可以具体学一下,这些都是要好好掌握的。
public class Dictionary {
private HashMap dictionary;
private int wordsCount;
public Dictionary() {
dictionary = new HashMap();
wordsCount = 0;
}
public void insert( String word ) {
if ( dictionary.containsKey( word ) ) { //判断新插入的单词是否已经存在于字典中
//如果存在的话,那么就在原来的出现次数上再+1
int currentCount = dictionary.get( word );
dictionary.put( word, currentCount + 1 );
} else {
//如果不存在的话,就在字典中加入这个单词,并将其出现的次数设为1
dictionary.put( word, 1 );
}
wordsCount++;
}
public void displayDictionary() {
//Map类型一般采用keySet()来取得Map的所有key键的方式来进行遍历
for ( Iterator it = dictionary.keySet().iterator(); it.hasNext(); ) {
String key = it.next();
System.out.print( key );
System.out.print( ": " );
System.out.println( dictionary.get( key ) );
}
}
public static void main( String[] args ) throws Exception {
//这里放置你所说的段落
String passage = "public static void main( String[] args ) {";
//Scanner类为扫描仪
Scanner scanner = new Scanner( passage );
Dictionary dict = new Dictionary();
while ( scanner.hasNextLine() ) {
String line =scanner.nextLine();
//这里采用的是正则表达式来判断一个行是否是空行
boolean isBlankLine = line.matches( "\\W" ) || line.length() == 0;
if ( isBlankLine ) {
continue;
}
String[] words = line.split( "\\W" );
for ( String word : words ) {
//只有当单词不是空单词时才将其插入字典
if ( word.length() != 0 ) {
dict.insert( word );
}
}
}
dict.displayDictionary();
}
}
其他的都没改变,受字数限制加不了全部了
展开全部
设计一个JAVA程序,对一个保存英文文章的文本文件进行统计,最后给出每个英文字符及每个标点的出现次数,按出现次数的降幂排列。 你到底想问什么?残阳破晓SHUANG考虑采纳一下。有空到365testing,测评网,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Enumeration;
import java.util.Hashtable;
public class MyTest {
private static Object String;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="aabceeee";
char[] c=s.toCharArray();//转换成char[]
Hashtable h=new Hashtable();//用于存储
for(char c1:c) {
if(h.containsKey(c1))//判断是否已有了
((Counter)h.get(c1)).i++;//有了的话i++
else{
h.put(c1, new Counter());//没有的话存储到h
}
}
Enumeration e=h.keys();//keys的集合
while(e.hasMoreElements()){
Character ra= (Character) e.nextElement();
System.out.println(ra + "=" + ((Counter)h.get(ra)).i);//打印
}
}
}
class Counter{
int i=1;
}
上面的不知道你能看懂吗??
import java.util.Hashtable;
public class MyTest {
private static Object String;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="aabceeee";
char[] c=s.toCharArray();//转换成char[]
Hashtable h=new Hashtable();//用于存储
for(char c1:c) {
if(h.containsKey(c1))//判断是否已有了
((Counter)h.get(c1)).i++;//有了的话i++
else{
h.put(c1, new Counter());//没有的话存储到h
}
}
Enumeration e=h.keys();//keys的集合
while(e.hasMoreElements()){
Character ra= (Character) e.nextElement();
System.out.println(ra + "=" + ((Counter)h.get(ra)).i);//打印
}
}
}
class Counter{
int i=1;
}
上面的不知道你能看懂吗??
追问
啊,可能是我没说清楚,我想要的是统计一段文章中每个单词出现的次数而不是字母出现的次数啊!!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用正则表达式
int n=0;
String duanluo=段落;
String regex="\\s匹配的单词\\s";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(duanluo);
while(matcher.find()) {
n++;
}
System.out.println(regex+"出现"n+"次");
。。。可能我理解错了 没试 但是这样的思路 会重复输出
String[] aa=duanluo.split(" ");
for(int i=0;i<aa.length;i++){
int n=1;
for(int j=i+1;j<aa.length;j++){
if(aa[i].trim().equals(aa[j].trim())){
n++;
}
}
System.out.println(aa[i]+"出现"+n+"次");
}
int n=0;
String duanluo=段落;
String regex="\\s匹配的单词\\s";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(duanluo);
while(matcher.find()) {
n++;
}
System.out.println(regex+"出现"n+"次");
。。。可能我理解错了 没试 但是这样的思路 会重复输出
String[] aa=duanluo.split(" ");
for(int i=0;i<aa.length;i++){
int n=1;
for(int j=i+1;j<aa.length;j++){
if(aa[i].trim().equals(aa[j].trim())){
n++;
}
}
System.out.println(aa[i]+"出现"+n+"次");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |